Mongodb查询按其值查找所有键

时间:2017-05-18 16:15:05

标签: java mongodb object key

我是mongodb的新手。我有一个看起来像的文档 enter image description here

所以我想触发对象“users”的查询,它给出了所有值为true的键名。

请在java中回答

2 个答案:

答案 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;
});