Так что я пытаюсь вставить объект в параметры и не увенчался успехом. Моя структура MongoDB выглядит следующим образом:Вставить объект в вложенный массив mongodb nodejs
[
{
"_id": "04",
"name": "test service 4",
"id": "04",
"version": "0.0.1",
"title": "testing",
"description": "test",
"protocol": "test",
"operations": [
{
"_id": "99",
"oName": "test op 52222222222",
"sid": "04",
"name": "test op 52222222222",
"oid": "99",
"parameters": {},
"description": "testing",
"returntype": "test"
},
{
"_id": "58",
"oName": "test op 52222222222",
"sid": "04",
"name": "test op 52222222222",
"oid": "58",
"parameters": {},
"description": "testing",
"returntype": "test"
}
]
}
]
Я хочу, чтобы иметь возможность добавить объект в параметры с основными деталями, такими как имя, идентификатор и тип. Я не совсем уверен, как справиться с этим, поскольку у меня есть все другие операции CRUD, реализованные до части параметров. Как мне это сделать? Я знаю, что у mongodb возникают проблемы при попытке вставить что-то в массив внутри массива, поэтому, если у кого-то есть какие-то предложения относительно того, как я могу это сделать, я бы очень признателен. Благодарю.
Одна из проблем заключается в том, что у меня нет доступа к _id корневого объекта, но у меня есть _id для операции, в которую я вставляю параметр. Поэтому я пытался вставить параметр, используя этот код:
collection.update({"operations":{"$elemMatch": {"oid": oid}}}, {'$addToSet':{"operations.parameters": {name: "test"} }}, {safe:true}, function(err, result) {
if (err) {
res.send({'error':'An error has occurred'});
} else {
res.send(result[0]);
}
});
Это не работает.
Как я уже сказал, вам нужно использовать позиционный оператор .... –