如何根据嵌套对象的键和值进行查询?

时间:2019-01-25 20:17:18

标签: mongodb mongodb-query

"session": { 
  "number": 123,
  "words": {
    "1": {
      "id": 10,
      "name": "Hello"
    },
    "2": {
      "id": 13,
      "name": "Hi"
    },
    "3": {
      "id": 135,
      "name": "Hey"
    }
  }
}

我们在MongoDB数据库中具有给定结构的数据,我无法对其进行修改。

我可以基于查询session.number得到的对象是123,但是现在的挑战是我们知道嵌套的name是Hi,Hey或Hello,但是对象内部的增量键单词是无法预测的,是否可以根据“名称”字段进行查询?

1 个答案:

答案 0 :(得分:0)

您可以使用$objectToArray并将words属性转换为数组,然后根据需要查询它,可以使用以下命令:

collection.aggregate([
    {
        $project: {
            words: { $objectToArray: "$session.words" }
        }
    },
    {
        $match: {
            'words.v': 'hi'
        }
    }
]);

您可以阅读docs以获得更多信息。