我想查询文档。这是它的架构
{
_id,
notes: [{_id: 243234,
text: "hey"},
_id, 421123,
text: "hi"}
]
}
我想首先通过_id查找文档,然后在notes [1]上找到'text'的值。
使用这个,我可以找到实际文档,但是如何找到notes数组中的对象?我必须找到并更新注释中的“文本”。
socket.on("individualnote edit", function(data) {
rooms.find({ _id: data.roomId}, function( err, doc) {
if (err) {
console.log("Something wrong when updating data!");
}
console.log(doc);
});
答案 0 :(得分:1)
您可以使用positional $
运算符来查找和更新子文档数组中的元素。
位置$运算符标识要更新的数组中的元素,而不显式指定元素在数组中的位置。
rooms.findOneAndUpdate({
_id: _id,
'notes.text': 'hey'
}, {
'$set': {
'notes.$.text': 'new text'
}
}).then(() => {
console.log('Success');
}).catch((err) => {
console.log('err', err.stack);
});