セット内の埋め込みドキュメントを更新したり、単一のクエリに存在しない場合にドキュメントを挿入したりするにはどうすればよいですか? 以下のようなドキュメントがあるとします。'records' は埋め込みドキュメントのセットです。
{
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 ..."}}
}
}
);
ありがとう