$を使用できますパイプラインによるルックアップ MongoDBv3.6以降 、
- localField
_id
を渡しましょうmodel_id
として 変数の場合、$$参照を使用してルックアップパイプライン内のフィールドを使用できます。 -
$match
を配置するパイプライン ステージングして、必要な条件とuser_id
を一致させます 状態
{
$lookup: {
from: "bookmarks",
let: { model_id: "$_id" },
pipeline: [
{
$match: {
$expr: { $eq: ["$$model_id", "$model_id"] },
user_id: objectId(req.user._id)
}
}
],
as: "bookmarks"
}
}
MongoDB v3.4のその他のオプション 、
- $ filter
bookmarks
のループを繰り返す 条件に基づいてフィルタリングされたブックマークを取得します
{
$lookup: {
from: "bookmarks",
localField: "_id",
foreignField: "model_id",
as: "bookmarks"
}
},
{
$addFields: {
bookmarks: {
$filter: {
input: "$bookmarks",
cond: { $eq: ["$$this.user_id", objectId(req.user._id)] }
}
}
}
}