MongoDB扩展json来更新objectid



我正在尝试使用mongodb扩展json更新ObjectId。

我正在使用下面的插入文档。

collection.insertMany([{ parentQueryGroupId: { $oid :
"628fadb4d370987ac789c0cd" } }])

所以它像parentQueryGroupId: { $oid : "628fadb4d370987ac789c0cd"那样存储

但是我需要将它存储为ObjectId("628fadb4d370987ac789c0cd")

是否可以直接通过扩展JSON实现?问题是,服务器端查询是通用的。所以我从客户端发送数据,然后直接传递id给更新。但我需要它是ObjectId而不是对象

我可以在这种情况下循环,如果有$oid键存在,那么我可以将其转换为ObjectId,但这是由Mongoose或MongoDB原生支持的吗?

我使用bson包中的EJSON将其转换为如下所示的适当格式。

import { EJSON } from 'bson';
collection.insertMany(EJSON.deserialize([{ parentQueryGroupId: { $oid :
"628fadb4d370987ac789c0cd" } }]))
console.log(EJSON.deserialize([{ parentQueryGroupId: { $oid :
"628fadb4d370987ac789c0cd" } }])) // Outputs similar to: [{ parentQueryGroupId: ObjectId("628fadb4d370987ac789c0cd") }]

如果它不是扩展json,它就没有问题。在没有扩展类型的情况下也能很好地工作(除非你真的想要存储这些$oid格式,因为反序列化也会转换它们)。

你可以试试这个

const mongoose = require('mongoose'); 
const ObjectId = mongoose.Types.ObjectId;
collection.insertMany([{ parentQueryGroupId: {ObjectId("628fadb4d370987ac789c0cd")} }])

最新更新