[英]Set the a MongoDB collection field value based on another collection field value
[英]Get the MongoDB collection field value based on if another collection exists or not
我有两个像这样的 collections:
集合_1
[{
name: "p1",
use: "u1"
},
{
name: "p2",
use: "u2"
}, ...]
集合_2
[{
user_name: "p1",
user_id: "Id1"
date: "DATE"
},{
user_name: "p2",
user_id: "Id2"
date: "DATE"
},{
user_name: "p3",
user_id: "Id1"
date: "DATE"
}, ...]
如果collection_1
名称字段与collection_2
user_name字段匹配并且user_id
等于“Id1”,我希望最喜欢的字段为 boolean。
这在 MongoDB 中的聚合或其他更好的方法中是否可行?
//result
[{
name: "p1",
is_favorite: true
},{
name: "p2",
is_favorite: false,
},{
name: "p2",
is_favorite: true,
}]
$lookup
- 集合col1 (带键: name
)与col2 (带键: user_name
)连接。
$project
- 装饰 output 文档。 对于is_favorite
字段,使用$in
运算符检查Id1
是否在col2.user_id
数组中。
db.col1.aggregate([
{
$lookup: {
from: "col2",
localField: "name",
foreignField: "user_name",
as: "col2"
}
},
{
$project: {
name: 1,
is_favorite: {
$in: [
"Id1",
"$col2.user_id"
]
}
}
}
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.