node.js - 查找 MongoDb 架构设计的查询

标签 node.js mongodb mongoose mongodb-query

我有厨房架构,其结构如下,我想对此架构进行查找查询,以从包数组中获取具有特定 ID 和日期的包。

{
"_id" : ObjectId("58aacd498caf670a837e7093"),
"name" : "Kitchen 1",
"packages" : [ 
    {
        "package" : ObjectId("58aacd038caf670a837e7091"),
        "availibility" : [ 
            {
                "date" : ISODate("2015-03-25T00:00:00.000Z"),
                "count" : 20
            }, 
            {
                "date" : ISODate("2016-03-25T00:00:00.000Z"),
                "count" : 30
            }
        ]
    }, 
    {
        "package" : ObjectId("58aacd108caf670a837e7092"),
        "availibility" : [ 
            {
                "date" : ISODate("2016-03-25T00:00:00.000Z"),
                "count" : 10
            }
        ]
    }
],
"__v" : 0
}

如果我使用包 ID(58aacd038caf670a837e7091) 和日期(2015-03-25T00:00:00.000Z) 进行查找查询,则响应应如下所示:-

{
 "package" : ObjectId("58aacd038caf670a837e7091"),
 "date" : ISODate("2015-03-25T00:00:00.000Z")
 "count" : 20
}

最佳答案

在 mongodb 中:

您必须使用循环才能仅查看单个日期。对于所有日期,包括包 ID 的匹配日期,您可以执行以下操作:

db.collection_name.find({'packages.package':ObjectId("package_id"),'packages.availability.date': ISODate("date")},{'packages.package':1, 'packages.availability':1}).pretty()

在 Mongoose 中,我假设您已经导入了厨房架构

Kichen.find({'packages.package':"package_id",'packages.availability.date': "iso_date"}, function(err, package){
   if(err) 
       console.log("There was an error");
   if(package == null){
       console.log("no package found");
   } else {
       //do whatever
   }
});

关于node.js - 查找 MongoDb 架构设计的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42345105/

相关文章:

java - 对于 AWS 上的 Web 应用程序,是否有可以与 DynamoDB 一起使用的 Play 替代品?

使用 Passport 和 typescript : cannot find req. 用户的 Node.js 身份验证

node.js - Angular 4 具有通用 "Unexpected token import"

node.js - 如何在node.js中构建特定查询以从mongodb获取数据?

java - MongoDB 查询匹配单个条目和数组元素

javascript - 在 mongoDB 中获取错误未知组运算符 '$group'

node.js - 如何添加对模型的引用?

node.js - 如何获取登录用户的对象数组的总和

Node.js:Mongoose 模式默认随机标记不是随机的

javascript - Sinon - 如何使间接调用的函数返回某些内容