【问题标题】:mongodb update Unexpected tokenmongodb更新意外的令牌
【发布时间】:2016-10-27 15:28:19
【问题描述】:

我尝试在 MongoDB 中更新我的收藏。

[ { _id: 5811cc62a50998a59193d4c0,
    film: 
     { id: '2',
       title: 'Pirates of the Caribbean: Dead Men Tell No Tales ',
       year: '2017',
       quality: 'HDrip',
       stars: 'John Depp, Orlando Bloom, Javier Bardem, Kaya Scodelario, Brenton Thwaites',
       Show: true },
    Show: false },
  { _id: 5811d693e4d24a0a69e8c12f,
    film: 
     { id: 5,
       title: 'Doctor Strange',
       year: '2016',
       quality: 'Blu-ray',
       stars: 'Benedict Cumberbatch, Chiwetel Ejiofor, Rachel McAdams, Benedict Wong, Mads Mikkelsen',
       Show: true } },
  { _id: 5811d9e884efe15a708a8f1d,
    film: 
     { id: 6,
       title: 'Hacksaw Ridge',
       year: '2016',
       quality: 'DVDrip',
       stars: 'Teresa Palmer, Andrew Garfield, Vince Vaughn, Hugo Weaving, Sam Worthington',
       Show: true } } ]

在这里,我想在数组的任何对象中访问“电影”中的“显示”项。

我写过:

 db.wl.update({query: {_id: mongojs.ObjectId(req.body._id)},
  update: {$set: {film.$.Show: req.body.newShow}}
  })

但结果我得到了这个错误:

我尝试使用“.0”。而不是 '.$.'只是用点。 它仍然不起作用。

【问题讨论】:

  • 它是{$set: {"film.$.Show": req.body.newShow},在引号之间
  • 它仍然没有改变任何东西
  • 什么意思?错误至少应该不同
  • 哦,原来如此。在服务器上一切正常。但是当我检查在浏览器控制台中返回的对象时,这个值没有改变,但应该改变。

标签: mongodb express reactjs


【解决方案1】:

首先,请确保查询正确并返回您要更新的对象。此外,更新是一种异步方法,从您展示的代码来看,您没有实现回调。应该是这样的:

db.wl.update({_id: mongojs.ObjectId(req.body._id)},
  {$set: {"film.Show": req.body.newShow}}
  , function(err, res) {
      if (err){
          console.warn(err.message);
      }else{
          console.log(res);
          //do something
      }
  });)

【讨论】:

  • 抱歉,查询一切正常,但感谢您的想法
【解决方案2】:

问题出在db.wl.update。以下是我的解决方法。

db.wl.update(
    {_id: mongojs.ObjectId(req.body._id)},
    {$set: {"film.Show": req.body.newShow}}
  )

有了它,一切正常。对不起,愚蠢的问题。

【讨论】:

  • 哇,没错,错过了。我也会更新我的答案,以免误导任何人
猜你喜欢
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2017-11-14
  • 2021-09-21
  • 2018-03-14
  • 1970-01-01
  • 2021-03-19
  • 2018-12-01
相关资源
最近更新 更多