Я хотел бы предварить это словами о том, что английский не является моим родным языком, если какое-либо из моих объяснений расплывчато или не имеет смысла, пожалуйста, дайте мне знать, и я постараюсь прояснить их.
У меня есть документ, содержащий некоторые вложенные данные.В настоящее время product
и customer
являются массивами, я бы предпочел иметь их как прямые ObjectID.
{
"_id" : ObjectId("5bab713622c97440f287f2bf"),
"created_at" : ISODate("2018-09-26T13:44:54.431Z"),
"prod_line" : ObjectId("5b878e4c22c9745f1090de66"),
"entries" : [
{
"order_number" : "123",
"product" : [
ObjectId("5ba8a0e822c974290b2ea18d")
],
"customer" : [
ObjectId("5b86a20922c9745f1a6408d4")
],
"quantity" : "14"
},
{
"order_number" : "456",
"product" : [
ObjectId("5b878ed322c9745f1090de6c")
],
"customer" : [
ObjectId("5b86a20922c9745f1a6408d5")
],
"quantity" : "12"
}
]
}
Я попытался использовать следующий запрос для его обновления, однако это оказалось безуспешным, так как Mongo невести себя вполне так, как я ожидал.
db.Document.find().forEach(function(doc){
doc.entries.forEach(function(entry){
var entry_id = entry.product[0]
db.Document.update({_id: doc._id}, {$set:{'product': entry_id}});
print(entry_id)
})
})
С помощью этого запроса он устанавливает product
в корне объекта, не совсем то, на что я надеялся.То, что я надеялся сделать, это перебирать записи и изменять каждый отдельный product
и customer
, чтобы он был только их ObjectId, а не массивом.Можно ли сделать это через оболочку Монго или мне нужно искать другой способ сделать это?Спасибо!