2

クエリしようとしているサンプルドキュメントは次のとおりです

{
   "_id":"asdf0-002f-42d6-b111-ade91df09249",
   "user":[
      {
         "_id":"14bfgdsfg0-3708-46ee-8164-7ee1d029a507",
         "n":"aaa"
      },
      {
         "_id":"aasdfa89-5cfe-4861-8a9a-f77428158ca9",
         "n":"bbb"
      }
   ]
}

ドキュメントには 2 つのユーザー参照があり、user _id とその他の情報が含まれています。私は 2 つのユーザー ID を持っており、ユーザー ID のみを使用してこのドキュメントを取得しようとしています。また、2つのIDの順序もわかりません。これは可能なクエリですか?

col.findOne({
   user:{
      $all:[
         {
            _id:"14bfgdsfg0-3708-46ee-8164-7ee1d029a507"
         },
         {
            _id:"aasdfa89-5cfe-4861-8a9a-f77428158ca9"
         }
      ]
   }
})

^^私が試したことはうまくいきません。

4

2 に答える 2

2

$all の試みに近づいています。

col.findOne({
   "user._id":{
       $all : [ "14bfgdsfg0-3708-46ee-8164-7ee1d029a507", 
            "aasdfa89-5cfe-4861-8a9a-f77428158ca9" ]

   }
}

引用符で囲むことにより、サブドキュメントを照会できます。そこから $all は、探している値に対して機能します。

Mongodb find a document with all subdocuments meet a conditionは、このタイプのクエリのバリエーションを示しています。

于 2013-06-26T16:54:09.030 に答える
1

ElemMatchでうまくいくはずです。

col.findOne({user:{$elemMatch:{"_id":"14bfgdsfg0-3708-46ee-8164-7ee1d029a507", "_id":"aasdfa89-5cfe-4861-8a9a-f77428158ca9" }}})

于 2013-06-26T06:37:39.483 に答える