假设我有几个这样的文件
{
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完成,但可以在查询本身内完成吗?)
答案 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”上运行查询。