2017-02-01 3 views
2

私は私がMQInConditionが非常にある、存在していることを見てこれを試みたが、

conditions := { 'conditionIds' -> {'$in' -> [ 'uQqazzdwSYsEmqGNp' ] } asDictionary } asDictionary. collection := database collectionAt: 'users'. collection query: [ :q | q where: conditions ].

ましhttps://docs.mongodb.com/manual/reference/operator/query/in/

{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

を文書として$inを使用してMongoDBのドキュメントの選択を実行する必要があります有望なのですが、私はテストやプロジェクトの文書では何の例も見つけられませんでした。それを使う方法は誰でも知っていますか?ありがとう!

答えて

2

小さなトークンではブロックのためにArray初期化子として[]を間違えました。代わりに{}を使用してください。

collection query: { 'key' -> { 
    '$in' -> { val1 . val2 } } asDictionary } asDictionary 

クエリを使用する場合:aBlockバージョンでは、ブロック内にsmalltalk式を使用します。しかし、あなたが使用できる表現の量はかなり限られており、この日付には$をサポートしていません。

+0

Thanks Norbertしかし、私たちは 'MQInCondition'を持っていますが、それを動作させるためには何が必要でしょうか? –

+0

レコードの場合:私は実際に '{val1}を使うことができないように、パラメータ化されるクエリの値(引数である配列)が必要でした。 val2} asDictionary' –

+0

だから、{val1の代わりに配列を入れてください。 val2}。 –

1

以前の試みでは引数の配列に構文エラーがあり、一般的に正しいと考えられました。これは動作するものである:

あなたは1いずれかを使用でき

conditions := { 'conditionIds' -> {'$in' -> #('uQqazzdwSYsEmqGNp') } asDictionary } asDictionary. collection := database collectionAt: 'users'. collection query: [ :q | q where: conditions ].

4

:1には、JavaScriptの構文をマッピングされた(例えば、ディレクトリを送信)または「自動的に」クエリを構築するためにMQuerryを使用しています。下記のサンプル:

mongo := Mongo default open. 
db := mongo databaseNamed: 'playground'. 
col := db getCollection: 'test'. 


col add: {'field' -> 'value1'} asDictionary; 
    add: {'field' -> 'value2'} asDictionary. 

col select: { ('field' -> { '$in' -> #('value1' 'value2') } asDictionary)}. "The javascript way" 
col select: [ :each | (each at: 'field') in: #('value1' 'value2') ] "The Smalltalk way" 
col select: [ :each | (each field) in: #('value1' 'value2') ]. "Even Smalltalkier :-)" 
関連する問題