2016-07-27 2 views
0

正しいMongoDBクエリを引き出す際に問題が発生しています。一度に複数の指定されたIDを取得するfind操作を使用してクエリを作成しようとしています。 ObjectId()関数を使用することはできません。私は$たり、正常に使用することができた

{ 
"_id": { 
    "$oid": "123" 
}, 
"someField": "hello" 
... 
} 
{ 
"_id": { 
    "$oid": "456" 
}, 
"someField": "hello" 
... 
} 

:私はMongoDBの中のデータセットは、次のように見えるの行を持ってい

など、$または、$と、中に$のようなプレーンな演算子を使用する必要があります以下の方法ではなく、MongoDBのドキュメントは、パフォーマンスの面で超える$かに$を使用することを提案するので、私は$を使用してこれを行う方法を知りたい:

{ $or: [{ "_id": { "$oid": "123" } },{ "_id": { "$oid": "456"}}]} 

私は、次のクエリを試してみました、いずれも結果を返さなかった:

{ "_id": { $in: ["123", "456"] } } 
{ "_id": { $in: [ "$oid": "123","$oid": "456" ]} } 
{ "_id.$oid": { $in: ["123", "456"] } } 

最後に、一致するすべてのオブジェクトIDの「someField」フィールドも照会しているため、オブジェクトIDを完全に分離するクエリは使用できません。

答えて

1

あなたはほとんどそれを持っていた:

{ "_id": { $in: [ "$oid": "123","$oid": "456" ]} } 
should read 
{ "_id":{ $in:[{"$oid":"123"},{"$oid":"456"}]}} 

あなたは配列で渡していますが_idフィールドを検索しているので、あなたが各項目に{"$oid":"oid_value"}を送信する必要が

関連する問題