所以我试图在参数中插入一个对象并且不成功。我的mongodb结构如下所示:
[
{
"_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"
}
]
}
]
我希望能够将对象添加到具有基本详细信息(如name,id和type)的参数中。我不完全确定如何解决这个问题,因为我已经实现了所有其他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]);
}
});
但这不起作用。
答案 0 :(得分:3)
我可以使用以下代码完成插入:
collection.update({ "operations": {$elemMatch: {_id:oid}}}, {$addToSet: { "operations.$.parameters" : parameter}}, function(err, result) {
if (err) {
res.send({'error':'An error has occurred'});
} else {
res.send(result[0]);
}
});
万一有人需要它。
答案 1 :(得分:-1)
这是因为您需要使用positional operator,我从链接中复制的示例几乎与您的情况相同:
db.students.update(
{ _id: 4, "grades.grade": 85 },
{ $set: { "grades.$.std" : 6 } }
)