を使用して配列内のドキュメントを更新しました。以下のような文書を作成しました。売り上げフィールドが売り上げフィールド全体よりも小さい場合にのみ更新します。私はドキュメントの配列内のドキュメントを取得する方法を知っており、ドキュメント内の2つのフィールドを比較する方法はわかっていますが、アップデートと一緒に1つの式でそれらをすべて一緒に行うことはできません。
{
"_id" : ObjectId("4f7ee46e08403d063ab0b4f9"),
"name" : "MongoDB",
"notes" : [
{
"_Id" : ObjectId("4f7ee46e08403d063ab0h659")
"title" : "Hello MongoDB",
"content" : "Hello MongoDB",
"total" : 100
},
{
"_Id" : ObjectId("4f7ee46e08403d083ab0h659")
"title" : "ReplicaSet MongoDB",
"content" : "ReplicaSet MongoDB",
"total" : 200,
"sold" : 2
},
{
"_Id" : ObjectId("4f7ee65e08403d083ab0h659")
"title" : "ReplicaSet MongoDB",
"content" : "ReplicaSet MongoDB",
"total" : 200,
}
]
}
文書の配列からドキュメントを読むために私の式:
db.Collection.find({'notes._id':ObjectId('58791af46c698c00475e7f41')},{'notes.$':true})
私は2つのフィールド
db.Collection.find({ $where : "this.total > this.sold" });
何 'sold'が存在していない事例については? – chridam