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

时间:2019-01-20 00:49:14

标签: database mongodb nosql

今天,我开始使用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"  
              }
          ]
}

1 个答案:

答案 0 :(得分:1)

您的localField应该不仅是openingHoursId.id的{​​{1}}

id