Database 如何在mongoDB中使用数组进行查找
今天我开始与MongoDB合作。我创建了两个系列:餐厅和OpeningHours。我已使用以下代码将数据插入数据库:Database 如何在mongoDB中使用数组进行查找,database,mongodb,nosql,Database,Mongodb,Nosql,今天我开始与MongoDB合作。我创建了两个系列:餐厅和OpeningHours。我已使用以下代码将数据插入数据库: db.OpeningHours.insert({ day: "Sunday", from: "10.00am", to: "16.00pm" }); db.Restaurant.insert({ name: "Restaurant01", openingHoursId:
db.OpeningHours.insert({
day: "Sunday",
from: "10.00am",
to: "16.00pm"
});
db.Restaurant.insert({
name: "Restaurant01",
openingHoursId:
[
{id: db.OpeningHours.find({day: "Sunday", from: "10.00am", to: "16.00pm"})[0]._id},
]
});
该餐厅包含一系列OpeningHours ID。我想用lookup编写一个查询,这样我就可以从餐厅获得所有数据以及相应营业时间的数据。这是到目前为止我的代码,如果我运行它,我会得到一个错误:命令失败
db.Restaurant.aggregate([
{
$unwind: "$openingHoursId",
$lookup:
{
from: "OpeningHours",
localField: "id",
foreignField: "_id",
as: "RestaurantHours"
}
}
])
我想要的预期结果如下:
{
"_id": ObjectId("5c43b6c8d0fa3ff24621f749"),
"name": "Restaurant01",
"openingHoursId":
[
{
"id": ObjectId("5c43b6c8d0fa3ff2462fg93e")
}
],
"RestaurantHours" :
[
{
"_id": ObjectId("5c43b6c8d0fa3ff2462fg93e"),
"day": "Sunday",
"from": "10.00am",
"to": "16.00pm"
}
]
}
您的
localField
应该是openingHoursId.id
而不仅仅是id
db.Restaurant.aggregate([
{ "$unwind": "$openingHoursId" },
{ "$lookup": {
"from": "OpeningHours",
"localField": "openingHoursId.id",
"foreignField": "_id",
"as": "openingHoursId.RestaurantHours"
}},
{ "$unwind": "$openingHoursId.RestaurantHours" },
{ "$group": {
"_id": "$_id",
"name": { "$first": "name" },
"openingHoursId": { "$push": "openingHoursId" }
}}
])
这个:谢谢,但是如果我向openingHoursId数组添加了一个或多个ID,那么结果就不会被推到同一个数组中。例如,如果我在数组中再添加两个ID(total=3),那么结果将打印同一个餐厅三次,但每次迭代都会更改数组元素