Meteor / MongoDB更新所有字段以便输入

时间:2016-01-15 15:13:00

标签: mongodb meteor nosql

我在Meteor中使用Mongo并编写了一个基本的CRUD,但想知道是否可以更新条目中的所有字段。我似乎只能更新条目中的特定字段,如下所示:

[[['11', '2012'], ['2014']],
 [['2016']],
 [['10', '2012']],
 [['11', '2012'], ['10', '2014']],
 [['2012'], ['11', '2012']]]

是否可以通过传入整个对象来更新整个条目?我试图保持我的代码干燥,而不必编写不同的函数来更新条目的不同字段。像这样:

Brief.update(briefObject._id, { $set: { description: briefObject.description} });

以下是条目示例的输出:

Brief.update(brief._id, { $set: briefObject }

以下是meteor:PRIMARY> schema = db.briefs.findOne(); { "_id" : "a56xpJ3ZTAzZKFmwD", "title" : "Foo", "client" : "Bar", "deadline" : ISODate("2017-01-01T12:00:00Z"), "description" : "Lorem Ipsum Dolor Sit", "createdAt" : ISODate("2016-01-15T16:20:46.403Z"), "username" : "fooBar" }

的示例
briefObject

1 个答案:

答案 0 :(得分:1)

您可以在 $set 运算符中重新创建要在更新中使用它之前删除其他两个键_id$$hashKey的更新对象。使用这种方法,您不必重新创建对象中的所有属性,只需从新对象中删除保留的键,您就可以了。

您可以创建可在 update 中使用的选择器和修改器对象,如下例所示:

var selector = { "_id": briefObject._id },
    modifier = { "$set": briefObject };

delete modifier["$set"]["_id"];
delete modifier["$set"]["$$hashKey"];

Brief.update(selector, modifier);