1

たとえば、次のような配列があります。

var arr = ["1","1.1","1.3","2","2.1","2.2","2.3"]

と Collection A 、このように

[
  {_id:"1",子:["1.1","1.4"]},
  {_id:"2",子:["2.1","2.2"]},
  {_id:"3",子:["3.1","3.2"]}
]

探す({....})
結果を出したい

[
  {_id:"1",子:["1.1"]},
  {_id:"2",子:["2.1","2.2"]},
]

結果の子の配列は、 arrと collectionAの交点です。children

クエリ演算子を設定するにはどうすればよいですか?

4

2 に答える 2

2

単純なクエリ (検索) では必要な結果を得ることができませんが、集計フレームワークを使用してそれを行うことができます。方法は次のとおりです。

var arr = ["1","1.1","1.3","2","2.1","2.2","2.3"]

db.A.aggregate([ { "$unwind" : "$children" }, 
                 { "$match"  : { "children" : { "$in" : arr } } },
                 { "$group"  : { "_id" : "$_id", "children" : { "$push" : "$children" } } }
               ]
);

サンプルデータの結果:

{ "_id" : "2", "children" : [  "2.1",  "2.2" ] }
{ "_id" : "1", "children" : [  "1.1" ] }
于 2013-10-29T04:51:11.587 に答える