蒙戈哈希找到

问题描述:

假设我有几个文件,像这样蒙戈哈希找到

{ 
    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来完成的文件/散列键查询后,但可以在查询本身内完成吗?)

问题是没有对象键的通配符(请参见https://jira.mongodb.org/browse/SERVER-267),所以如果不列出所有键,就无法做到这一点在你的“价值”中。如果你知道所有的钥匙是什么,这可能是一个选择,但我想你没有。

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

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

你可能要考虑改变你的模式,使值的数组是这样的:

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

,那么你可以指数value.property和运行value.property =“foo”的查询。