【发布时间】:2020-05-24 08:18:13
【问题描述】:
我在下面附上了以下 Mongo 集合。 它是现有的,不是创建的新集合,我正在尝试在 features 数组中推送新项目,但由于以下错误,我无法实现:美元 ($) 前缀字段 '$oid' in 'features.0._id.$oid' 对存储无效。 使用这个脚本:
db.getCollection("test").update({ _id: "RYB0001" },
{
$push: {
"features": {
"_id": {
"$oid": ObjectId(),
},
"featureItems": [],
"typeId": "type3"
}
}
});
如果是驱动程序版本问题,我可以采取任何解决方法将新项目推送到当前集合吗? MongoDb 版本:4.0.4 Mongo Collection screenshot
【问题讨论】:
-
文档请不要粘贴图片,请使用格式化文本。
-
MongoDB 中的字段名称 (
$oid) 不得以美元符号开头。试试oid。见Restrictions on Field Names -
"_id": ObjectId()怎么样?如果已经放入 objectid 对象,为什么还需要$oid编码语法? -
@WerfriedDomscheit,目前该集合具有该格式的数据,只需在特征数组中推送一个新项目。有这个 $oid 就像屏幕截图中的那个一样,我尝试使用 oid: ObjectId 但仍然得到同样的错误。
-
如果当前数据有
$oid,那么我强烈建议您迁移数据以使用不带 $ 的字段 - 这样可以节省很多问题。
标签: mongodb mongodb-query mongoid