我有以下查询:
Section.find({"clause": sub.section}, function(err, docs){
var detail = parseInt(sub.detail);
docs[0].subClauses[0].additionalDetails[detail-1].percentile = sub.percentile;
docs[0].markModified("subClauses");
docs[0].save(function(err, doc){
if(err) { return callback(err) };
callback();
})
})
当我在.save函数中记录doc时,它似乎已成功保存。但是,在其他地方查询数据库时,保存尚未发生。它试图保存的对象是这样的深度:
[
{
"clause": "1",
"subClauses:
[
{
"clause":"1.1",
"additionalDetails:
[
{
"detail": "1",
"content": "whatever"
}
]
}
]
}
]
每个数组中有几个项目。
我是否无法使用Mongo将数据保存到嵌套数组对象?
答案 0 :(得分:1)
如果我理解你要做什么,那么我认为你想要使用的是Mongo Position Operator($)。这用于索引文档中的嵌套数组。在当前代码中,您只引用数组中的第一个对象。使用位置运算符,您将能够基于某些其他数据(例如查询)引用其他位置。
以下是运营商的文档:http://docs.mongodb.org/manual/reference/operator/update/positional/
这是另一个Stack Overflow响应,它可能有点帮助: MongoDB $ operator