我有厨房架构,其结构如下,我想对此架构进行查找查询,以从包数组中获取具有特定 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/