gpt4 book ai didi

database - 如何在 mongoDB 中使用数组进行查找

转载 作者:搜寻专家 更新时间:2023-10-30 23:27:44 24 4
gpt4 key购买 nike

今天我开始使用 MongoDB。我创建了两个集合:Restaurant 和 OpeningHours。我已使用以下代码将数据插入数据库:

   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。我想编写一个带查找的查询,以便从餐厅获取所有数据以及相应营业时间的数据。到目前为止,这是我的代码,如果我运行它,我会收到错误消息:命令失败...

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" }
}}
])

关于database - 如何在 mongoDB 中使用数组进行查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com