Node.js mongo update查询忽略更新操作中的几个字段
我正在使用基于Nodejs的mongoskin驱动程序进行mongo数据库操作。我想更新我的文档,但不想更新几个字段。以下是更多细节 添加请求:Node.js mongo update查询忽略更新操作中的几个字段,node.js,mongodb,mongodb-query,mongoskin,Node.js,Mongodb,Mongodb Query,Mongoskin,我正在使用基于Nodejs的mongoskin驱动程序进行mongo数据库操作。我想更新我的文档,但不想更新几个字段。以下是更多细节 添加请求: { "name": "Theme Name", "description": "Theme Description", "createdByUserId": "53651221b25521601a5c9530", } { "_id":"53555ef203dabf282b750a81" "name": "Theme
{
"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"),
}
更新请求:
{
"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.日期创建
目前,我在更新操作中采用以下方法:
1.读取给定\u id的集合
2.从数据库中读取以上两个字段并更新请求,然后执行数据库更新操作
寻找干净方法的帮助。您的更新请求实际上执行以下操作:它用请求提供的值替换文档中的所有内容(当然除了“\u id”,它是不可变的)。你想要的是在mongosphere中被称为a的东西。请看一下这张照片。因此,您将要做的是:
db.yourcollection.update({"_id":"53555ef203dabf282b750a81"},
{$set:
{
"categoryId":"53555ef203dabf282b750a81",
"updatedByUserId":"5675561b25521601a5c9530",
"dateUpdated":ISODate("2014-05-19T19:49:28.203Z")
}
}
)
据我所知,现在有一种方法可以将完整的文档发送到mongo[s | d],并告诉它只跳过某些字段。您的更新请求实际上是这样做的:它用请求提供的值替换文档中的所有内容(当然除了“|id”,它是不可变的)。你想要的是在mongosphere中被称为a的东西。请看一下这张照片。因此,您将要做的是:
db.yourcollection.update({"_id":"53555ef203dabf282b750a81"},
{$set:
{
"categoryId":"53555ef203dabf282b750a81",
"updatedByUserId":"5675561b25521601a5c9530",
"dateUpdated":ISODate("2014-05-19T19:49:28.203Z")
}
}
)
据我所知,现在有一种方法可以将完整的文档发送到mongo[s|d],并告诉它只跳过某些字段。谢谢Markus。我正在考虑创建包装器方法来迭代文档的每个字段,并按照您的建议创建查询。希望这能起作用。很高兴知道这不受支持:-)您不需要这样做。由于您知道哪些字段需要更新,只需在这些字段上使用
$set
,您就应该很好了。回复中的博客文章链接不起作用。不过我在谷歌上搜索了一下,猜测新的链接是:谢谢马库斯。我正在考虑创建包装器方法来迭代文档的每个字段,并按照您的建议创建查询。希望这能起作用。很高兴知道这不受支持:-)您不需要这样做。由于您知道哪些字段需要更新,只需在这些字段上使用$set
,您就应该很好了。回复中的博客文章链接不起作用。不过我在谷歌上搜索了一下,猜测新的链接是: