使用唯一ID更新数组中的项目

时间:2015-08-03 20:27:07

标签: mongodb meteor

我有这样的文档结构:

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更新文档。"

1 个答案:

答案 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更新文档。