Обозначение $ oid является частью Расширенного MongoDB JSON. Я предполагаю, что данные в вашей базе данных на самом деле не имеют этой пары ключ-значение, и они были представлены таким образом только после использования чего-то вроде JSON.stringify(obj)
> db.test.find({});
{ "_id" : "RYB0001", "features" : [ { "_id" : ObjectId("5e40d46a97abdef3faa0d5d9"), "featureItems" : [ ], "typeId" : "type3" } ] }
> JSON.stringify(db.test.find({})[0]);
{"_id":"RYB0001","features":[{"_id":{"$oid":"5e40d46a97abdef3faa0d5d9"},"featureItems":[],"typeId":"type3"}]}
Вам нужно будет сгенерировать новый ObjectId, используя его конструктор "_id": new ObjectId()
, обратите внимание на ключевое слово new
, думаю, @Thilo, возможно, пропустил это в своем комментарии.
db.getCollection("test").update({ _id: "RYB0001" },
{
$push: {
"features": {
"_id": new ObjectId(),
"featureItems": [],
"typeId": "type3"
}
}
});