Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js mongo update查询忽略更新操作中的几个字段_Node.js_Mongodb_Mongodb Query_Mongoskin - Fatal编程技术网

Node.js mongo update查询忽略更新操作中的几个字段

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

我正在使用基于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"),
}
更新请求:

{
  "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
,您就应该很好了。回复中的博客文章链接不起作用。不过我在谷歌上搜索了一下,猜测新的链接是: