0
我想更新使用$ elemMatch獲取的子文檔。我在網上發現了一些帖子,但到目前爲止我無法使其工作。這是我有:
模式:
var user = {
_id: ObjectId
addresses: [{
_id: ObjectId
street: String
}]
};
代碼:
this.findOne({
'addresses._id': address_id
}, { 'occurrences': { $elemMatch: {
'_id': address_id
}}})
.exec(function(err, doc) {
if (doc) {
// Update the sub doc
doc.addresses[0].street = 'Blah';
doc.update({ 'addresses': { $elemMatch: { '_id': address_id }}}, { $set: {"addresses.$.street": doc.addresses[0].street }})
.exec(function(err, count) {
...
在地址子文檔上述結果被殲滅和空白新的重建。我怎樣才能保存doc/subdoc?
我的目標是能夠通過子文檔(地址)ID獲取文檔(用戶),修改一個匹配的地址然後保存它。
如果有多個對象,則不會更新。 – 2016-11-15 13:30:40
@kailashyogeshwar說這很危險。如果街道數組中有多個元素,則它們都將被更新。 – ogborstad 2016-12-02 09:57:28
@ogborstad不,更新中的'$'只針對'_id'與'address_id'匹配的'addresses'元素,因爲這是查詢的一部分。 – JohnnyHK 2016-12-02 13:26:10