0
以下のコードは、最初に1つのフィールドで2つのコレクションを結合し、他のフィールドで値をフィルタリングしようとします。
db.zeroDimFacts.aggregate(
{$lookup:{from:"zeroDim",localField:"Kind",foreignField:"Model", as:"EmbedUp"}},
{$project: {"EmSub":"$EmbedUp.Sub","Result": {$eq:["$Type","$EmbedUp.Sub"]}, "type":"$Type"}})
以下のコードの出力を確認してください。 'EmSub' & '$ Type'の値が同じであっても、 'Result'フィールドには表示されません。 'EmSub'が配列として表示されている場合は、その配列に含まれる値のみを比較するにはどうすればよいですか?
/* 1 */
{
"_id" : NumberLong(1),
"EmSub" : [
"Fruit"
],
"Result" : false,
"type" : "Fruit"
}
/* 2 */
{
"_id" : NumberLong(2),
"EmSub" : [
"Fruit"
],
"Result" : false,
"type" : "Fruit"
}
/* 3 */
{
"_id" : NumberLong(3),
"EmSub" : [
"Fruit"
],
"Result" : false,
"type" : "Fruit"
}
は$ EQ試してください:[ "$タイプ"、 "$ EmbedUp.Sub $。"] –
@AmiramKorachは:以下のエラーを得た: アサート:コマンドが失敗しました:{ \t "OK":0、 \t "ERRMSG": "FieldPathフィールド名は '$' で始めることはできません"、 \t "コード":16410 }:集合体は申し訳ありませんが –
に失敗しました。 "EmSub":{$ first: "$ EmbedUp.Sub"}と比較して$ eq:["$ Type"、{$ first: "$ EmbedUp.Sub"}] –