我在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
答案 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);