json 将MongoDB Stitch查询中的objectID或_id转换为字符串并Map

xzv2uavs  于 2023-03-20  发布在  Go
关注(0)|答案(2)|浏览(197)

我可以查询MongoDB Stitch数据库,但得到不同的结果。
如果我控制台记录我的所有数据,它会显示如下(注意“id:Uint 8数组(12)[ 94、67、83...] “

item.find().asArray()
.then(data => {
    console.log("Found docs", data)
  });

但是,如果我将其作为数组查询:

// Find database documents
      item.find({})
      .toArray()
      .then(xyz => 
        this.setState({xyz})
      )

以下是我收到的数据,并声明:

{
    "xyz": [
      {
        "_id": {
          "id": "DataView(12)",
          "get_inc": "",
          "getInc": "",
          "generate": "",
          "generationTime": 1581470496,
          "inspect": "toString"
        },
        "company": "AAA",
        "url": "http://www.google.com",
        "loc": "sac, ca",
        "gender": "female",
        "tags": "clothes"
      },
      "{_id: {…}, company: \"BBB\", gender: \"male\", loc: \"sf…}",
      "{_id: {…}, company: \"ZZZ\", gender: \"male\", loc: \"oa…}"
    ]
  }

我想获取objectID(应该类似于“5e 435320 e45 ce 24954381 c52”),它似乎是“bsonType”的唯一键:“objectId”模式,我假设我需要将它转换为字符串(?),这样我就可以Map它,并将它用作唯一键,以便稍后在表中使用(“列表中的每个子元素都应该有一个唯一的“key”prop”)。
谢谢!

6tdlim6h

6tdlim6h1#

已经是ObjectId了。
要获取字符串值,只需使用toString()

item.find().toArray()
.then(data => {
    console.log(data.map(elem => elem._id.toString()));
});
e5nqia27

e5nqia272#

或者使用聚合:

item.aggregate([{$set: {_id: {$toString: '$_id'}}}]).toArray()

https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#overwriting-an-existing-field
https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/

相关问题