mongo v3.4.4を使用しています
どのようにして配列のオブジェクトを取得しますか?私は必要なもの
コレクションサンプルMongoの配列からオブジェクトを取得する方法
{
name: earth
age: 12
cars : [
{
brand : tesla
color : red
time : 123
},
{
brand : toyota
color : black
time : 124
},
]
},
{
name: mars
age: 15
cars : [
{
brand : volvo
color : green
time : 125
},
{
brand : honda
color : blue
time : 126
},
]
}
はわずかです:
{
brand : tesla
color : red
time : 123
}
私が試してみました:
db.users.aggregate([
{
$match:{"name":"earth"}
},
{
$project:
{"cars":
{"$filter":
{
input:"$cars",
as:"cars",
condition: "{$eq:[ $$cars.brand :"tesla"]}"
}
}
}
}
])
しかし、私はまだ私が期待される出力が表示されません。フィルターを正しく使用していないかどうかはわかりません。 cars配列にオブジェクトが1つしかない場合は、そのオブジェクトを1つだけ返します。集計クエリ以下
db.users.aggregate([
{$match: {name:"earth"}},
{$unwind: "$cars"},
{$replaceRoot: {newRoot: "$cars"}},
{$match: {brand:"tesla"}}
]);
で、クエリ
の下に使用しており、出力は次のようになります一致。 "all"を読んだ場合、答えは '.find({" name ":" earth "、" cars.brand ":" tesla "}、{" brand。$ ":1})'になります。同じことを返すそれは "あなたが欲しいものではない"として、それに慣れてください!あなたは結局、ドキュメントを最初に配列に埋め込むことを決めた人物です。一致する埋め込みドキュメントだけを検索するだけの場合は、代わりに別のコレクションに配置する必要があります。それはできますか?はい。あなたはそれをしなければなりませんか?いいえ。データと一致してコード内の項目を抽出するだけです –