答案 0 :(得分:1)
您可以在3.4.4
版本中尝试以下聚合管道。
使用users
后跟$objectToArray
将$filter + $map
嵌入文档更改为键值对数组,以提取匹配值的键。
db.collection.aggregate([
{
$project: {
keys: {
$map: {
input: {
$filter: {
input: {$objectToArray: "$users"},
as: "resultf",
cond: {
$eq: ["$$resultf.v", true]
}
}
},
as: "resultm",
in: "$$resultm.k"
}
}
}
}
])
答案 1 :(得分:0)
以下查询将为您提供数组格式值为true的所有用户键 -
db.collectionName.find({},{users:1}).map(function(myDoc){
var names = [];
for (var key in myDoc.users) {
if(myDoc.users[key]){
names.push(key);
}
}
return names;
});