Pymongo - 通过查询值列表查询 mongodb 的第一个数组元素

Pymongo - Query mongdb for first array elemnet by query of list of values

给定的集合:

{
    "_id" : "1.1000038",
    "recomendation" : [ 
        "1.6739718"
    ]
}

/* 2 */
{
    "_id" : "1.1000069",
    "recomendation" : [ 
        "1.9185509", 
        "1.9051998", 
        "1.9034279", 
        "1.8288046", 
        "1.8152670", 
        "1.858775", 
        "1.6224229", 
        "1.4591674", 
        "1.3862464", 
        "1.3427739", 
        "1.3080062", 
        "1.3003608", 
        "1.1694619", 
        "1.1634683", 
        "1.1590664", 
        "1.1524146", 
        "1.754599", 
        "1.700837", 
        "1.763617"
    ]
}

我需要在 MongoDB 中查询值列表并获取值列表的第一个元素

这里是 mongo 语法

的查询
db.getCollection('similar_articles').find({"_id":{$in:["1.1000069","1.1000038"]}})

我不想在 python 端过滤它,因为它可能太大了。

我没有找到关于它的任何文档

期望输出: Pandas 数据帧

_id         recom 
1.1000038   1.6739718
1.1000069   1.9185509

我不太了解 pymongo,但您需要这个查询:

首先 $match_ids 进入数组(这就像你找到的一样)。

然后使用$project创建字段recom(可以使用“推荐”覆盖现有字段)并将值设置为数组中的第一个。

db.collection.aggregate([
  {
    "$match": { "_id": { "$in": [ "1.1000069", "1.1000038" ] } }
  },
  {
    "$project": { "recom": { "$arrayElemAt": [ "$recomendation", 0 ] } }
  }
])

示例here

查看 doumentation 看来您只需要复制并粘贴此查询即可。