database - 如何在 mongoDB 中查找数组
问题描述
今天我开始使用 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" }
}}
])
推荐阅读
- google-cloud-platform - 使用```gcloud run deploy```时如何增加云构建超时?
- beautifulsoup - 如何使用 BeautifulSoup 从 IMDb 获取数据
- javascript - 如何将对象数组转换为嵌套对象?
- python - 如何使用 cantools 从 .asc 文件中正确读取 J1939 消息?
- julia - Julia SimpleHypergraphs - Hypernetx 错误
- time-complexity - 给定代码的时间和复杂度是多少
- angular - 使用 Angular 自动登录的 Keycloak
- c++ - 复制另一个矢量以获得更小的尺寸
- json - 使用datatables显示json文件数据
- python - 为子图设置标题,指示生成函数(线性/指数)