如何在 MongoDB 中找到“$oid”而不是 _id?

Posted

技术标签:

【中文标题】如何在 MongoDB 中找到“$oid”而不是 _id?【英文标题】:How do I find "$oid" in MongoDB instead of _id? 【发布时间】:2022-01-17 19:01:18 【问题描述】:

我正在尝试在 MongoDB 中进行查找搜索,我只想将 objectId 作为字符串返回,但我得到了:

[
  
    "_id": 
      "$oid": "6114ffebae76283ccfb92c44"
    
  
[

我想要:

[
  
    "$oid": "6114ffebae76283ccfb92c44"
  
]

这是我的查询:

db.person.find(
     $and: ["age":20,"name":"Frank"] , "_id":1
)

【问题讨论】:

$oid 应该是MongoDB Extended JSON 的语法。如果您只是想提取 ObjectId 的“值”,您可能正在寻找 $toString 您从哪里(什么工具,例如 mongo shell 等)运行查询? 【参考方案1】:

这里可以测试一下(我把_id的名字设置为id)

https://mongoplayground.net/p/xdw3PpiwYId

db.person.find(
  $and: [
    
      "age": 20
    ,
    
      "name": "Frank"
    
  ]
,

  "id": 
    $toString: "$_id"
  ,
  "_id": 0
)

【讨论】:

【参考方案2】:

你可以使用聚合:

db.collection.aggregate([
  
    $project: 
      _id: 
        $toString: "$_id"
      
    
  
])

【讨论】:

【参考方案3】:

您可以申请 $toString 以获取所需格式的 id。

db.collection.find(,

  "_id": 
    $toString: "$_id"
  
)

但是您不能使用 $oid 作为字段名称,因为它是保留关键字。

示例:https://mongoplayground.net/p/y1DsrQ-k4Hj

【讨论】:

以上是关于如何在 MongoDB 中找到“$oid”而不是 _id?的主要内容,如果未能解决你的问题,请参考以下文章

mongodb找到多个参考文件

在 MongoLab 上运行的 MongoDB 中日期的语法是啥?

在 MongoLab 上运行的 MongoDB 中日期的语法是啥?

mongodb没有加入时如何找到我想要的结果?

MongoDB $oid 与 ObjectId

MongoDB $oid 与 ObjectId