MongoDB:SyntaxError:属性列表后缺少}

时间:2019-09-27 18:12:37

标签: javascript database mongodb

所以我有一个使用Mongo设置的基本测试数据库。 users集合当前的外观如下:

{
    "_id" : ObjectId("5d8e23ed2f8849a57711e48e"),
    "firstName" : "Joe",
    "lastName" : "Black",
    "email" : "joeblack@gmail.com",
    "portfolio" : [ ],
    "watchlist" : [ ],
    "goals" : [ ],
    "badges" : [ ],
    "ranks" : [ ],
    "hasPortfolio" : false,
    "hasWatchlist" : false,
    "hasGoals" : false
}
{
    "_id" : ObjectId("5d8e23ed2f8849a57711e48f"),
    "firstName" : "Juan",
    "lastName" : "Gonzales",
    "email" : "juangonzales@outlook.com",
    "portfolio" : [ ],
    "watchlist" : [ ],
    "goals" : [ ],
    "badges" : [ ],
    "ranks" : [ ],
    "hasPortfolio" : false,
    "hasWatchlist" : false,
    "hasGoals" : false
}
{
    "_id" : ObjectId("5d8e338fe0562db42af793c9"),
    "firstName" : "Foo",
    "lastName" : "Bar",
    "email" : "foobar@baz.com",
    "portfolio" : [ ],
    "watchlist" : [ ],
    "goals" : [ ],
    "ranks" : [ ],
    "badges" : [
        {
            "name" : "Tester",
            "type" : "bronze",
            "new" : true
        }
    ],
    "hasPortfolio" : false,
    "hasWatchlist" : false,
    "hasGoals" : false
}

我要做的是更新用户portfolio上的foobar@baz.com数组。但我不断收到以下错误:

  

2019-09-27T13:07:00.590-0500 E查询[js]语法错误:缺少}属性列表@(shell):6:8后

命令

db.users.update({email: 'foobar@baz.com'}, {
  $set: {
    portfolio: [
      {
        availableSupply: "1000000"
        currency: "SHIT"
        exchange: "Binance",
        exchange_base: "btc",
        marketCap: 10000,
        name: "ShitCoin",
        percentage: 100,
        price: 0.01,
        position: 1,
        value: 0.01,
        inWatchlist: false
      }
    ]
  }
})

enter image description here

2 个答案:

答案 0 :(得分:4)

plz尝试

db.users.update({email: 'foobar@baz.com'}, {
  $set: {
    portfolio: [
      {
        availableSupply: "1000000",
        currency: "SHIT",
        exchange: "Binance",
        exchange_base: "btc",
        marketCap: 10000,
        name: "ShitCoin",
        percentage: 100,
        price: 0.01,
        position: 1,
        value: 0.01,
        inWatchlist: false
      }
    ]
  }
})

答案 1 :(得分:1)

只需在每个项目后添加逗号:

portfolio: [
  {
    availableSupply: "1000000", // You missed these
    currency: "SHIT", // You missed these
    exchange: "Binance",
    exchange_base: "btc",
    marketCap: 10000,
    name: "ShitCoin",
    percentage: 100,
    price: 0.01,
    position: 1,
    value: 0.01,
    inWatchlist: false
  }
]