返回集合中的所有文档,但为满足查询的文档添加一个键



我是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做这项工作,如果某人只想在响应中使用特定的键。

最新更新