小编Anu*_*eek的帖子

在mongo aggregate $ lookup查询中使用数组第一个字段来匹配文档

我想使用我的数组字段第0个值来使用Mongo aggregate $ lookup查询在销售文档中查找匹配项.这是我的查询:

db.products.aggregate([ 
{ 
    $match : { _id:ObjectId("57c6957fb190ecc02e8b456b")  }  
},
{
    $lookup : {
        from : 'sale',
        localField: 'categories.0', 
        foreignField: 'saleCategoryId', 
        as : 'pcSales'  
    }
}]);
Run Code Online (Sandbox Code Playgroud)

结果:

{
"_id" : ObjectId("57c6957fb190ecc02e8b456b"),   
"categories" : [
    "57c54f0db190ec430d8b4571"
],  
"pcSales" : [
    {
        "_id" : ObjectId("57c7df5f30fb6eacb3810d1b"),                       
        "Title" : "Latest Arrivals",
    }
]}
Run Code Online (Sandbox Code Playgroud)

此查询将返回一个匹配,但当我检查它不匹配.我不知道为什么会发生这种情况,当我从查询中删除第0部分时它返回空白数组.像这样:

{
    "_id" : ObjectId("57c6957fb190ecc02e8b456b"),   
    "categories" : [
        "57c54f0db190ec430d8b4571"
    ],  
    "pcSales" : []
}
Run Code Online (Sandbox Code Playgroud)

saleCategoryId也是一个包含categoriesKey数组的数组字段.

请帮忙.

mongodb mongodb-query aggregation-framework mongodb-aggregation

3
推荐指数
1
解决办法
3107
查看次数