【问题标题】:query in mongo Shell gives SyntaxError: missing : after propertymongo Shell 中的查询给出了 SyntaxError: missing : after property
【发布时间】:2016-12-20 04:34:24
【问题描述】:
db.movieDetails.find(
  { year: 2013, imdb.rating: Pg-13, award.wins: 0 },
  { title: 1, _id: 0 }
).pretty();

mongo shell 返回此错误

2016-08-13T09:08:00.648+0200 E QUERY [thread1] SyntaxError: 缺失 : 在属性 id @(shell):1:60 之后

为什么? 提前谢谢!

【问题讨论】:

    标签: mongodb mongodb-query mongo-shell


    【解决方案1】:

    如果您的查询包含内部文档,则为它们使用引号。另外,使用引号查询字符串值

    db.movieDetails.find(
      { year: 2013, "imdb.rating": "Pg-13", "award.wins": 0 },
      { title: 1, _id: 0 }
    ).pretty();
    

    【讨论】:

    • 如果运算符期望单个参数但您已将其放在花括号中,也会发生这种情况。例如{$sqrt: {$_id}} 不正确,因为它应该是{$sqrt: "$_id"}
    • 运行以下命令时出现同样的错误:rocky26 = Movie.create({:title "Rocky XXVI"}) mongo 不会自动生成 ID?
    • 在插入时遇到同样的错误,以类似的方式修复它,通过在内部文档 (y) 上添加引号
    【解决方案2】:

    如果缺少 ":" 也会出现此错误。

    就我而言,我错过了 $set 之后的 ":",如下所示。

    db.myData.updateOne({_id:ObjectId("new_id")},{$set{name:"new_name"}})

    我遇到了标题中提到的相同错误,我更改的代码有效

    db.myData.updateOne({_id:ObjectId("new_id")},{$set:{name:"new_name"}})

    希望这可以帮助犯我错误的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2023-03-27
      • 2020-08-24
      • 1970-01-01
      相关资源
      最近更新 更多