Mongo在哈希中找到

时间:2012-07-27 17:56:34

标签: mongodb mongodb-query

假设我有几个这样的文件

{
  title: 'blah',
  value: {
    "A": {property: "foo"},
    "B": {property: "bar"},
    "C": {property: "foo"},
    "D": {property: "foo"}
  }
}

{
  title: 'blah2',
  value: {
    "A": {property: "bar"},
    "B": {property: "bar"},
    "C": {property: "bar"},
    "D": {property: "foo"}
  }
}

哪些mongodb查询会获得{property: "foo"}

的所有文档/哈希键

(我知道这可以在查询后使用js完成,但可以在查询本身内完成吗?)

2 个答案:

答案 0 :(得分:1)

问题在于对象键没有通配符(请参阅https://jira.mongodb.org/browse/SERVER-267),因此如果不在“值”中列出所有键,就无法执行此操作。如果你知道所有的键是什么,这可能是一个选择,但我想你不会。

如果将“value”转换为数组而不是对象,则可以轻松执行查询(这将返回文档,而不是哈希键)。

答案 1 :(得分:1)

正如第一个回答所说,mongodb查询语言中没有任何内容可以让你进行这种类型的查询。

您可能需要考虑更改架构以使值成为这样的数组:

value: [
         { name : "A", property : "bar" },
         { name : "B", property : "bar" },
         { name : "C", property : "bar" },
         { name : "D", property : "foo" }
       ]

然后你可以在value.property上编制索引并在value.property =“foo”上运行查询。