我是MongoDB的新手。
我想知道这样的事情能不能实现?
users Collection :
[
{
name : "John",
Gender : "Male",
},
{
name : "Alex",
Gender : "Male",
},
{
name : "Eva",
Gender : "Female",
}
]
db.users.find({Gender : "Male"});
Response :
[
{
name : "John",
Gender : "Male",
isMatchingQuery : true,
},
{
name : "Alex",
Gender : "Male",
isMatchingQuery : true,
},
{
name : "Eva",
Gender : "Female",
isMatchingQuery : false,
}
]
我们能得到这样的结果吗?每个文档都会作为响应返回,但满足查询的文档添加了一个值为true的键,而不满足查询的则添加了值为false的键。通过聚合有可能吗?
请在一行中使用:
db.users.aggregate([{$set:{"isMatchingQuery":{$eq:["$Gender","Male"]}}}])
结账操场
聚合框架可以实现类似的功能。
它看起来是这样的:
db.users.aggregate([
{
$set: { "isMatchingQuery": { $eq: [ "$Gender", "Male" ] } }
}
])
感谢大家的帮助。有趣的是,在挖掘更多的时候,我发现了另一种方法。有点像黑客。
db.users
.aggregate([
{
$project: {
_id: 1,
isMatchingQuery: {$eq: ["$Gender", "Male"] },
name: 1,
},
},
])
同时为$set和$project做这项工作,如果某人只想在响应中使用特定的键。