{
"_id": "1",
"style": "13123",
"category": "dress",
"colors": {
"Black": {
"prestock": 50,
"instock": 60,
"inactive": 0
},
"Blue": {
"prestock": 30,
"instock": 0,
"inactive": 0
},
"Red": {
"prestock": 10,
"instock": 60,
"inactive": 0
}
}
}
我有上面的 json,我需要访问 prestock、instock 和 inactive。 但颜色的值会根据款式而变化。 例如:
{
"_id": "2",
"style": "14321",
"category": "top",
"colors": {
"Green": {
"prestock": 50,
"instock": 60,
"inactive": 0
},
"Yellow": {
"prestock": 50,
"instock": 60,
"inactive": 0
}
}
}
我如何在 mongodb 中查询这个? 这会与 Object.keys(obj) 相关吗?
ps.如果这是一个重复的问题,请指导我!
谢谢!
最佳答案
根据SERVER-267,像{"colors.*.prestock": {$gte:30}}
这样的查询是不可能的,我怀疑这在未来几年内是否会得到支持。
最好的选择是将架构更改为数组:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
然后就可以查询了
db.foo.find( {"colors.prestock" : {$gte:30}} )
请注意,这将返回整个对象,包括所有颜色,即查询约束不成立的颜色。这可以使用聚合框架来解决,但同样,只能使用 $unwind
,它还要求 colors
是一个数组。
关于javascript - Object.keys,如何获取mongodb中的键列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19301168/