我有这样的文档结构:
Content {
_id: "mongoId"
Title: "Test",
Age: "5",
Peers: [{uniquePeer: "1", Name: "Testy Test", lastModified: "Never"}, {uniquePeer: "2", Name: "Test Tester", lastModified: "Never"}]
}
所以Peers
是一个具有唯一标识符的数组。如何更新数组中其中一个集的lastModified?根据mongodb,我只能使用文档的唯一ID来更新文档,但这只是顶级的。如何在此文档中更新此lastModified
Peers
的{{1}}字段中的此uniquePeer
字段?
编辑:
Content.update({"_id" : "mongoId", "Peers.uniquePeer" : "1"},{$set : {"Peers.$.lastModified" : "Now"}})
我仍然得到一个"不允许。不受信任的代码只能按ID更新文档。"
答案 0 :(得分:4)
请参阅docs以更新阵列。您的代码应该类似于:
服务器强>
Meteor.methods({
'content.update.lastModified': function(contentId, peerId) {
check(contentId, String);
check(peerId, String);
var selector = {_id : id, 'Peers.uniquePeer': peerId};
var modifier = {$set: {'Peers.$.lastModified': 'Now'}};
Content.update(selector, modifier);
}
})
<强>客户端强>
Meteor.call('content.update.lastModified', contentId, peerId);
请注意,此类操作需要在服务器定义的方法中进行,因为正如您所发现的那样,您只能通过客户端上的id更新文档。