数组中对象的$查找

数组中对象的$查找

对于作为ObjectId数组而不仅仅是一个对象的字段执行$查找的语法是什么?

示例订单文档:

{
  _id: ObjectId("..."),
  products: [
    ObjectId("..<Car ObjectId>.."),
    ObjectId("..<Bike ObjectId>..")
  ]}

不工作查询:

db.orders.aggregate([
    {
       $lookup:
         {
           from: "products",
           localField: "products",
           foreignField: "_id",
           as: "productObjects"
         }
    }])

期望结果

{
  _id: ObjectId("..."),
  products: [
    ObjectId("..<Car ObjectId>.."),
    ObjectId("..<Bike ObjectId>..")
  ],
  productObjects: [
    {<Car Object>},
    {<Bike Object>}
  ],}


阿波罗的战车
浏览 649回答 3
3回答

慕姐4208626

这个$lookup聚合管道阶段现在直接用于数组(3.3.4版本)。见:在本地(多个)值数组和外部(单个)值之间查找

慕运维8079593

使用美元您将得到第一个对象,而不是对象数组。查询:db.getCollection('vehicles').aggregate([ &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$match:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status:&nbsp;"AVAILABLE", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vehicleTypeId:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$in:&nbsp;Array.from(newSet(d.vehicleTypeIds)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;}, &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$lookup:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from:&nbsp;"servicelocations", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;localField:&nbsp;"locationId", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreignField:&nbsp;"serviceLocationId", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as:&nbsp;"locations" &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;}, &nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$unwind:&nbsp;"$locations" &nbsp;&nbsp;}]);结果:{ &nbsp;&nbsp;&nbsp;&nbsp;"_id"&nbsp;:&nbsp;ObjectId("59c3983a647101ec58ddcf90"), &nbsp;&nbsp;&nbsp;&nbsp;"vehicleId"&nbsp;:&nbsp;"45680", &nbsp;&nbsp;&nbsp;&nbsp;"regionId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;"vehicleTypeId"&nbsp;:&nbsp;"10TONBOX", &nbsp;&nbsp;&nbsp;&nbsp;"locationId"&nbsp;:&nbsp;"100", &nbsp;&nbsp;&nbsp;&nbsp;"description"&nbsp;:&nbsp;"Isuzu/2003-10&nbsp;Ton/Box", &nbsp;&nbsp;&nbsp;&nbsp;"deviceId"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;"earliestStart"&nbsp;:&nbsp;36000.0, &nbsp;&nbsp;&nbsp;&nbsp;"latestArrival"&nbsp;:&nbsp;54000.0, &nbsp;&nbsp;&nbsp;&nbsp;"status"&nbsp;:&nbsp;"AVAILABLE", &nbsp;&nbsp;&nbsp;&nbsp;"accountId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;"locations"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"_id"&nbsp;:&nbsp;ObjectId("59c3afeab7799c90ebb3291f"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"serviceLocationId"&nbsp;:&nbsp;"100", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regionId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"zoneId"&nbsp;:&nbsp;"DXBZONE1", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"description"&nbsp;:&nbsp;"Masafi&nbsp;Park&nbsp;Al&nbsp;Quoz", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"locationPriority"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"accountTypeId"&nbsp;:&nbsp;0.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"locationType"&nbsp;:&nbsp;"DEPOT", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"location"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"makani"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lat"&nbsp;:&nbsp;25.123091, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lng"&nbsp;:&nbsp;55.21082 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"deliveryDays"&nbsp;:&nbsp;"MTWRFSU", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"timeWindow"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"timeWindowTypeId"&nbsp;:&nbsp;"1" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"address1"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"address2"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"phone"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"city"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"county"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"state"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"country"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"zipcode"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"imageUrl"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"contact"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"email"&nbsp;:&nbsp;"" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"status"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"createdBy"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"updatedBy"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"updateDate"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"accountId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"serviceTimeTypeId"&nbsp;:&nbsp;"1" &nbsp;&nbsp;&nbsp;&nbsp;}}{ &nbsp;&nbsp;&nbsp;&nbsp;"_id"&nbsp;:&nbsp;ObjectId("59c3983a647101ec58ddcf91"), &nbsp;&nbsp;&nbsp;&nbsp;"vehicleId"&nbsp;:&nbsp;"81765", &nbsp;&nbsp;&nbsp;&nbsp;"regionId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;"vehicleTypeId"&nbsp;:&nbsp;"10TONBOX", &nbsp;&nbsp;&nbsp;&nbsp;"locationId"&nbsp;:&nbsp;"100", &nbsp;&nbsp;&nbsp;&nbsp;"description"&nbsp;:&nbsp;"Hino/2004-10&nbsp;Ton/Box", &nbsp;&nbsp;&nbsp;&nbsp;"deviceId"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;"earliestStart"&nbsp;:&nbsp;36000.0, &nbsp;&nbsp;&nbsp;&nbsp;"latestArrival"&nbsp;:&nbsp;54000.0, &nbsp;&nbsp;&nbsp;&nbsp;"status"&nbsp;:&nbsp;"AVAILABLE", &nbsp;&nbsp;&nbsp;&nbsp;"accountId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;"locations"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"_id"&nbsp;:&nbsp;ObjectId("59c3afeab7799c90ebb3291f"), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"serviceLocationId"&nbsp;:&nbsp;"100", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regionId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"zoneId"&nbsp;:&nbsp;"DXBZONE1", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"description"&nbsp;:&nbsp;"Masafi&nbsp;Park&nbsp;Al&nbsp;Quoz", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"locationPriority"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"accountTypeId"&nbsp;:&nbsp;0.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"locationType"&nbsp;:&nbsp;"DEPOT", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"location"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"makani"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lat"&nbsp;:&nbsp;25.123091, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"lng"&nbsp;:&nbsp;55.21082 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"deliveryDays"&nbsp;:&nbsp;"MTWRFSU", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"timeWindow"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"timeWindowTypeId"&nbsp;:&nbsp;"1" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"address1"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"address2"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"phone"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"city"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"county"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"state"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"country"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"zipcode"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"imageUrl"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"contact"&nbsp;:&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"email"&nbsp;:&nbsp;"" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"status"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"createdBy"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"updatedBy"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"updateDate"&nbsp;:&nbsp;"", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"accountId"&nbsp;:&nbsp;1.0, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"serviceTimeTypeId"&nbsp;:&nbsp;"1" &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MongoDB