2つのコレクションがあります ユーザー{id、 $ lookupを使ってコードを書こうとしましたが、すべてのファイルがユーザーに属し、 "abc.xyz"という名前でフィルタリングされていないので、次のクエリを書きました。名前によってそれをフィルタリング「abc.xyz」Mongo 2番目のコレクションに2つのコレクションを追加して条件を追加する方法
db.user.aggregate([
{"$lookup":
{
"from": "files",
"localField": "id",
"foreignField": "userId",
"as": "fileList"
}
},
{"$project": { "filList":{
"$filter": {
"input":"$fileList",
"as":"file"
"cond": {"$eq": ["$file.name","abc.xyz"]}
}
}
}
}
])
は、私は、ファイル名が「abc.xyz」すべてのファイルを検索したい
あなたは '$'を欠けています。 '' $ eq ''でなければなりません:["$$ file.name"、 "abc.xyz"] '' $ file'ではなく '$$ file''です。ここで問題となるのは、 '$ lookup'は、指定された条件にマッチするのとは対照的に、外部キーにマッチしたドキュメントを"すべて "返すことです。小さな結果セットではこれは問題ありません。 –
どうやったら違うのか教えてください私はmongoDBを新しくしています。あなたの提案は歓迎されます – Ganesh
[$ lookupから配列全体の要素のフィルタリングされた数を取得](https:// stackoverflow.com/questions/44888354/get-filtered-count-of-elements-in-array-from-lookup-along-with-the-whole-docume/44897438#44897438)。ちょうど答えて、正しい方法を説明します。 '$ lookup'の結果として配列をフィルタリングします。 –