为什么我不能将我的数据插入MongoDB数据库?

8aqjt8rx  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(150)

我已经从MongoDB导出了一个集合,它看起来如下所示:

[
{
    "_class": "test.Tag",
    "title": "My Title",
    "_id": {
        "$oid": "637a2bc4a9c297b306dd0be9"
    }
}
]

现在,我想向这个集合中添加另一个项。我已经创建了一个格式完全相同的json文件。但是,当我使用以下命令时:

db.tag.insertMany([{"_class": "test.Tag",  "title": "New Title","_id": {"$oid": "637a4171833047f9e046f3c9"}}])

我得到错误:

MongoBulkWriteError: _id fields may not contain '$'-prefixed fields: $oid is not valid for storage.

我在stackoverflow上找到了几个类似的问题,例如this one,但它们对我没有帮助。
我应该如何在我的数据库中插入一些东西?当我使用MongoDB Compass时,没有问题。它工作。但是当我在服务器上的真实的数据库上尝试它时,它不工作。如果它有帮助,我使用的是Mongo版本6.0.1。
你的帮助将不胜感激。

vc6uscn9

vc6uscn91#

在传统的mongo shell中,没有扩展json格式的帮助器,但是在mongosh中,您可以使用EJSON来反序列化扩展json并将其插入,如下所示:

> db.test4.insertMany([EJSON.deserialize(  {"_id": {   "$oid": "637aa8243d58f36141e59c8d"} } )])
    {
     acknowledged: true,
     insertedIds: { '0': new ObjectId("637aa8243d58f36141e59c8d") }
    }
    >

(MongoDB 5.0中不赞成使用传统的mongo shell,MongoDB 6.0中已将其删除)

相关问题