2

如果单个查询中不存在嵌入文档,如何更新集合中的嵌入文档或插入一个?假设我有如下文件。而“记录”是一组嵌入文档。

{
    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 ..."}}
        }
    }
);

谢谢

4

1 回答 1

0

你可以使用 Upsert

http://www.mongodb.org/display/DOCS/Updating#Updating-%7B%7Bupserts%7D%7D

于 2012-09-19T02:29:04.587 回答