以下のような変更の履歴を保持するコレクションがあります。つまり、変更されたサブdocの古い値と新しい値を保持します。mongoDB未知のフィールド名を持つ同じ文書内の2つのフィールドを比較する方法
例:基本サブ文書で名前のみが変更された場合、基本文書全体が古いセクションに配置されます。
古いセクションのすべてのフィールド名を知らなくても、すべてのフィールドが変更されたことを確認して印刷します。
例:「basic.name」は「transactionDetails.old.basic.name」と等しく、falseの場合は印刷します。
"transactionDetails.old.basic.name"が存在するかどうかはわかりませんが、
私の要件: 1) "transactionDetails.old"の最初のフィールドは何ですか 2)それが新しいフィールド値と等しいかどうかチェックし、falseなら印刷してください。 3)このようなものについてはどのように
db.collection.findOne()
{
"basic": {
"name": "newName",
"companyName": "NewCompany",
"address": "NewAddress"
},
"official": {
//New official stuff
},
"transactionDetails": {
"old": {
"basic": {
"name": "OldName",
"companyName": "OldCompany",
"address": "OldAddress"
},
"official": {
//Old official stuff
}
}
}
}
おかげで多くのことを、私がチェックします – Varun
残念ながら、MongoDB 3.2.11ではサポートされていないので、$ objectToArrayを使用することはできません。それ以外の方法はありますか? – Varun
残念ながら、そこにはないと思います...アップグレードはオプションではありませんか? – dnickless