Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Object.keys,如何在mongodb中获取密钥列表_Javascript_Node.js_Mongodb_Mongodb Query - Fatal编程技术网

Javascript Object.keys,如何在mongodb中获取密钥列表

Javascript Object.keys,如何在mongodb中获取密钥列表,javascript,node.js,mongodb,mongodb-query,Javascript,Node.js,Mongodb,Mongodb Query,我有上面的json,我需要访问prestock、instock和inactive。 但是颜色的值会随着样式的不同而变化。 例如: { "_id": "1", "style": "13123", "category": "dress", "colors": { "Black": { "prestock": 50, "instock": 60, "inactive": 0 }, "Blue": { "pr

我有上面的json,我需要访问prestock、instock和inactive。 但是颜色的值会随着样式的不同而变化。 例如:

{
"_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
        }
  }
}
如何在mongodb中查询此信息? 这是否与Object.keys(obj)相关

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


谢谢

这就是你要找的吗?

如果没有,那么应用程序必须有一个包含所有可能组合的键或枚举值的列表,您必须查询并遍历它们。

{“colors.*.prestock.”这样的查询:{$gte:30}
根据,是不可能的,我怀疑这在未来几年内是否会得到支持

最好将架构更改为数组:

{
 "_id": "2",
 "style": "14321", 
 "category": "top",
 "colors": {
     "Green": {
        "prestock": 50,
        "instock": 60,
        "inactive": 0
         }, 
     "Yellow": {
        "prestock": 50,
        "instock": 60,
        "inactive": 0
         }
      }
}
然后你可以查询

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

请注意,这将返回整个对象,包括所有颜色,即查询约束不适用的颜色。使用聚合框架可以解决这个问题,但同样,只使用
$unwind
,这也需要
颜色
作为数组。

你想从中得到什么?@user10我需要访问prestock、instock和INACTIVE的值一旦你在代码中有了对象,访问这些值并不困难,您可以在那里使用javascript。如果要查询它,您必须知道要查询的内容,即
绿色
黄色
instock
值?或者你想要像“任何颜色的笔迹>0”这样的东西吗?在这种情况下,您最好更改模式。@mnemosyn我需要这样的内容:{“colors.anycolor”:{“prestock”:{$gte:30}}}@wisleans您不能这样查询,这就是为什么您可能应该坚持使用像mnemosyn在回答中建议的数组的原因。我认为类似!但这对对象有效吗?你提供的链接已经在阵列中,应该试试看!请记住,Map/Reduce主要用于大型操作,并且有相当大的开销,因此它对于交互式查询没有用处。此外,您还必须构造一个非常复杂的
$或
查询来“伪造”通配符行为。@roko4326哦,等等。。不,这不是我需要的。如何在不指定“Black”的情况下访问prestock?这就是我现在拥有的,但我想更改模式。。无论如何谢谢你!
db.foo.find( {"colors.prestock" : {$gte:30}} )