1

假设我有几个这样的文件

{
  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 来完成,但可以在查询本身内完成吗?)

4

2 回答 2

1

正如第一个答案所说,mongodb 查询语言中没有任何内容可以让您执行此类查询。

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

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

然后您可以对 value.property 进行索引并在 value.property = "foo" 上运行查询。

于 2012-07-27T18:40:21.267 回答
1

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

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

于 2012-07-27T18:21:15.800 回答