Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 Mongodb$集不工作_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js Mongodb$集不工作

Node.js Mongodb$集不工作,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在尝试更新嵌套文档。查询正在返回正确的文档,但未更新属性 型号: { _id: '560b072434b72aa4050fff9f', trips: [ { tripId: '561581ef9387780e76469e96', startDate: "2015-11-17T06:00:00.000Z", endDate: "2015-11-18T06:00:00.000Z" },{

我正在尝试更新嵌套文档。查询正在返回正确的文档,但未更新属性

型号:

{
     _id: '560b072434b72aa4050fff9f',
     trips: [
       {
          tripId: '561581ef9387780e76469e96',
          startDate: "2015-11-17T06:00:00.000Z",
          endDate: "2015-11-18T06:00:00.000Z"
       },{
          tripId: '5617d1bb1d42c4da90d3bdea',
          startDate: "2015-10-17T06:00:00.000Z",
          endDate: "2015-10-18T06:00:00.000Z"
       }
     ],
}
查询:

UserData.update(
      { '_id': req.query._id, 'trips.tripId': req.query.tripId },
      { '$set': { 'trips.$.startDate' : req.query.newStartDate,
                  'trips.$.endDate' : req.query.newEndDate} },
      { 'multi': true },
      function(e, doc){
           console.log(doc);
      }
 );
模式:

var userDataSchema = {
  name: String,
  trips: Array
};

@BlakesSeven引导我找到了答案。我补充说:

var ObjectId=require('mongodb')。ObjectId

在server.js中的my app.route之前,使用npm安装了mongodb,然后进行了更改

{'u id':req.query.\u id'trips.tripId':req.query.tripId},

{'u id':ObjectId(req.query.id),'trips.tripId':ObjectId(req.query.tripId)},


现在一切都应该更新了。谢谢Blakes Seven

@Blakeseven引导我找到了答案。我补充说:

var ObjectId=require('mongodb')。ObjectId

在server.js中的my app.route之前,使用npm安装了mongodb,然后进行了更改

{'u id':req.query.\u id'trips.tripId':req.query.tripId},

{'u id':ObjectId(req.query.id),'trips.tripId':ObjectId(req.query.tripId)},


现在一切都应该更新了。谢谢Blakes Seven

看看。为什么
{'multi':true}
?既然您指定了
\u id
,您不是只想更新一个文档吗?是的,我在另一篇SO文章中读到,您必须将“multi”设置为true。我尝试了$elemMatch并删除了multi-true,但它仍然没有更新。正如我所说的,正确的记录正在被提取,没有匹配ID的trip不会被返回——它根本不会更新记录。
{ok:1,nModified:0,n:0}
。显示您定义的模式。注意,这里有一个数字的
\u id
值,如果覆盖可能缺少的默认
ObjectId
,mongoose需要特殊处理。请注意,结果确认没有匹配任何内容,因此输入有问题,架构定义可能是原因之一。@BlakesSeven这是我的错。我试图简化添加到这里的过程。我已将schema和_id字段更新为集合中的内容。此外,当我使用查询字符串时,它会找到一个匹配项:
db.userData.find({u id:req.query.{u id'trips.tripId':req.query.tripId})
看看。为什么
{multi':true}
?既然您指定了
\u id
,您不是只想更新一个文档吗?是的,我在另一篇SO文章中读到,您必须将“multi”设置为true。我尝试了$elemMatch并删除了multi-true,但它仍然没有更新。正如我所说的,正确的记录正在被提取,没有匹配ID的trip不会被返回——它根本不会更新记录。
{ok:1,nModified:0,n:0}
。显示您定义的模式。注意,这里有一个数字的
\u id
值,如果覆盖可能缺少的默认
ObjectId
,mongoose需要特殊处理。请注意,结果确认没有匹配任何内容,因此输入有问题,架构定义可能是原因之一。@BlakesSeven这是我的错。我试图简化添加到这里的过程。我已将schema和_id字段更新为集合中的内容。此外,当我使用查询字符串时,它会找到一个匹配项:
db.userData.find({u-id':req.query.\u-id,'trips.tripId':req.query.tripId})