蒙戈哈希找到
问题描述:
假设我有几个文件,像这样蒙戈哈希找到
{
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”的查询。