我使用基于Nodejs的mongoskin驱动程序进行mongo数据库操作。我想更新我的文档,但不想更新几个字段。以下是更多细节。
请求添加:
{
"name": "Theme Name",
"description": "Theme Description",
"createdByUserId": "53651221b25521601a5c9530",
}
请求更新:
{
"_id":"53555ef203dabf282b750a81"
"name": "Theme Name",
"categoryId": "53555ef203dabf282b750a81",
"description": "Theme Description",
"createdByUserId": "53651221b25521601a5c9530",
"updatedByUserId": "5675561b25521601a5c9530",
"dateCreated": ISODate("2014-05-19T19:47:26.603Z"),
"dateUpdated": ISODate("2014-05-19T19:49:28.203Z"),
}
我想忽略客户端发送的以下字段。 1. createdByUserId 2. dateCreated
暂时我在更新操作中采取以下方法: 1.阅读给定_id的集合 2.从数据库中读取以上两个字段并更新请求,然后执行数据库更新操作
寻求干净方法的帮助。
答案 0 :(得分:2)
您的更新请求实际执行以下操作:它使用请求提供的值替换文档中的所有内容(当然,“_id”除外,这是不可变的)。你想要的是在蒙古的所谓的"partial update"。请查看$set operator。所以你要做的就是:
db.yourcollection.update({"_id":"53555ef203dabf282b750a81"},
{$set:
{
"categoryId":"53555ef203dabf282b750a81",
"updatedByUserId":"5675561b25521601a5c9530",
"dateUpdated":ISODate("2014-05-19T19:49:28.203Z")
}
}
)
据我所知,现在有办法将完整的文件发送给mongo [s | d]并告诉它只跳过某些字段。