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

标签 javascript node.js mongodb mongodb-query

{
"_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/

相关文章:

javascript - 使用 JQUERY RAILS 从 Controller 获取参数

javascript - 从 Reducer Giving Error 调用服务文件中的 Axios API

JavaScript slider jquery

JavaScript Promises 未在链中传递正确的值

javascript - 客户端永久存储数据流中的所有图像

mongodb - 如何为 nosql 迁移关系数据库?

javascript - 我如何告诉 SimpleSchema 更新当前的 Meteor.user?

node.js - 上传/部署 zip 文件时,不会创建 .platform Hook 中的 AWS Elastic Beanstalk 自定义 nginx .conf 文件

java - 使用 Java 将 JsonObject 转换为 String

php - 一次处理更多插入的想法