【问题标题】:How to get data with default type from mongodb如何从 mongodb 获取默认类型的数据
【发布时间】:2019-09-06 04:22:26
【问题描述】:

我正在使用 nodejs 设置一个新服务器,使用 mongoose 连接到 mongodb。当我使用model.find()时,它返回数据但不是mongodb中的默认json类型

User.find({}, (err, docs) => {
  if (err) {
    res.send({
      status: false,
      message: err
    })
  } else if (docs) {

    res.json(docs);
  } else {
    res.send({
      status: false
    })
  }
})

这就是我得到的

{
  "_id": "5c25b0dc44eb7569f240e13c",
  "username": "",
  "idScores": [
    "5c1e100a44eb7569f240e118",
    "5c1e104744eb7569f240e11a"
  ]
}

但我想要这个结果

{
  "_id": {
    "$oid": "507c35dd8fada716c89d0013"
  },
  "username": "",
  "idScores": [{
      "$oid": "5c1e100a44eb7569f240e118"
    },
    {
      "$oid": "5c1e104744eb7569f240e11a"
    }
  ]
}

有人可以帮帮我吗?

【问题讨论】:

  • 如果您还没有检查过link,也许这会对您有所帮助?
  • @ShreyaShah 感谢您的回复,但我发现它对我没有帮助。我可以从响应数据中获取 JSON,但我希望参考字段始终在每个 id 处包含 $oid :)
  • 是解码 json 然后添加$oid 然后编码回来可以是一个选项吗?

标签: javascript node.js json mongodb mongoose


【解决方案1】:

别名 ObjectId() 的严格 MongoDB 扩展 JSON -> $oid read more

1) JSON 只能表示 BSON 支持的类型的子集。

2) 为了保留类型信息,MongoDB 为 JSON 格式添加了以下扩展。

3) 用于各种数据类型的表示取决于解析 JSON 的上下文。

{"_id": {"$oid":"507c35dd8fada716c89d0013"})
// is same as
{"_id": "507c35dd8fada716c89d0013"}

您不需要在每个 _id 元素中添加“$oid”,这只是符号。您可以使用点 _id 访问它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2022-06-19
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多