Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb $lookup按id匹配的对象数组_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb $lookup按id匹配的对象数组

Mongodb $lookup按id匹配的对象数组,mongodb,mongodb-query,Mongodb,Mongodb Query,所以我有两个收藏,stock和store 我正在尝试按id查询商店 我的股票看起来像这样 { _id: ObjectId('5ee93b1e9f96dd1257885748') productId: 100, inStore: [ { _id: ObjectId('5ee7ad659f96dd1257885742'), store: ObjectId('5ee906e59f96dd1257885745'), quantity: 10

所以我有两个收藏,
stock
store

我正在尝试按id查询商店

我的股票看起来像这样

{
  _id: ObjectId('5ee93b1e9f96dd1257885748')
  productId: 100,
  inStore: [
    {
      _id: ObjectId('5ee7ad659f96dd1257885742'),
      store: ObjectId('5ee906e59f96dd1257885745'),
      quantity: 10
    },
    {
      _id: ObjectId('5ee9085f9f96dd1257885746'),
      store: ObjectId('5ee904549f96dd1257885744'),
      quantity: 50
    }
  ]
}
store
是存储的引用对象

store: { type: Types.ObjectId, ref: 'Store' },
通过包含inStore.store.\u id的所有库存文档进行查询的正确方法是什么

我目前正在尝试以下方法:

但我没有得到任何结果?但是当我删除匹配条件时,我注意到存储是一个空数组。在这种情况下,如何正确使用查找

提前谢谢

  • 如果您有存储id,则根本不需要使用聚合管道。使用带有条件的简单查找
  • 查询条件使用字符串,但ID是ObjectID。这些值是不同的,因为它们的类型不同,因此您不会得到任何匹配项
  • {
      _id: ObjectId('5ee904549f96dd1257885744')
      name: 'Manchester Store'
    }
    
    
    const inventories = await InventoryModel()
        .aggregate([  
          { $unwind: "$inStore" },
          { $lookup: {
            from: "Store",
            localField: "inStore.store",
            foreignField: "_id",
            as: "inStore.store"
          }},
          {$match: {
            "inStore.store._id": '5ee906e59f96dd1257885745'
          }}
        ])
    
    'inStore._id' => ObjectId('...')