【问题标题】:Get _id without ObjectId from MongoDB从 MongoDB 获取没有 ObjectId 的 _id
【发布时间】:2020-08-26 05:31:17
【问题描述】:

我正在尝试从集合中获取 _id 而不获取 ObjectId 部分。

当我尝试以这种方式查询时:

db.collection.aggregate([
    {'$unwind': '$_id'}, 
    {
        '$project': {
            '_id': '$_id'
        }
    }
])

这会返回:

ObjectId("51234yhf789")
ObjectId("51234dff779")
ObjectId("51234yhf745")
ObjectId("51234dff123")
ObjectId("51234d45123")

即使我尝试:'_id': '$_id'.valueOf(),我也会得到同样的结果。

我如何获得:

51234yhf789
51234dff779
51234yhf745
51234dff123
51234d45123

需要 MongoDB V3.6 及更低版本的帮助

【问题讨论】:

    标签: mongodb mongodb-query pymongo objectid


    【解决方案1】:

    在 MongoDB 版本上 > 4.0 可以使用 $toStringObjectId() 转换为字符串:

    db.collection.aggregate([
        {'$unwind': '$_id'}, 
        {
            '$project': {
                '_id': {$toString : '$_id' }
            }
        }
    ])
    

    【讨论】:

    • 对不起,我应该提到这一点。它适用于 MongoDB 3.6
    • @noob :我认为你不能在4.0 下做到这一点,你为什么还要寻找字符串?你在做进一步的查询吗?因为如果你只是从那里返回,那么代码中的驱动程序应该自动将其转换为字符串类型,因为ObjectId() 不是与JSON 相关的任何类型..
    • 我正在尝试使用 objectId 加入字符串
    • 如果您发布您真正想要运行的查询,我们可以直接提供帮助,请参阅XY problem
    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2021-04-15
    • 2015-09-12
    • 2021-12-12
    • 2019-09-14
    • 2011-06-01
    • 2021-02-16
    相关资源
    最近更新 更多