Object.keys,如何获取mongodb中的键列表

{ "_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和不活动。 但颜色的价值将根据风格而改变。 例如:

 { "_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)有关?

如果这是一个重复的问题,请指导我!

谢谢!

根据SERVER-267 , {"colors.*.prestock" : {$gte:30}}是不可能的,我怀疑这个问题在未来的几年中会得到支持。

你最好的select是把模式改成一个数组:

 colors: [ { "color" : "Green", "instock" : 50, ... }, { "color" : "Yellow", "instock" : 50, ... }, ] 

然后你可以查询

 db.foo.find( {"colors.prestock" : {$gte:30}} ) 

请注意,这将返回整个对象,包括所有颜色,即查询约束不包含的那些对象。 这可以使用聚合框架来解决,但是同样只使用$unwind ,这也需要colors是一个数组。

这是你在找什么? MongoDB获取集合中所有键的名称

如果没有,那么应用程序必须具有包含所有可能组合的键或枚举值的列表,您将不得不查询并通过它们。