如果单个查询中不存在嵌入文档,如何更新集合中的嵌入文档或插入一个?假设我有如下文件。而“记录”是一组嵌入文档。
{
id: "1",
records: [
{userId:"5", userData: "..."},
{userId:"12", userData: "..."},
{userId:"27", userData: "..."}
]
}
我知道如何在单独的查询中插入或更新“记录”。但是我可以组合这些查询,使其与 MySQL 的 ON DUPLICATE KEY UPDATE 类似吗?我想避免执行另一个查询只是为了找出嵌入文档是否存在。
db.myCollection.update(
{id:"1", records.userId:"12"},
{records.$.userData:{"... new data ..."}}
);
db.myCollection.update(
{id:"1"},
{records:
{$push:
{userId: "33", userData: {"... new data ..."}}
}
}
);
谢谢