Синтаксическая ошибка в db.collection.save()

#mongodb

#mongodb

Вопрос:

Я впервые пытаюсь использовать MongoDB, но я застрял на следующей синтаксической ошибке: unexpected token illegal. Я проверил это, и все выглядит нормально. Я обнаружил аналогичную проблему в StackOverflow, но это связано с другой ошибкой. Что я делаю не так? Вот мой скрипт:

 db.student.save({"_id":ObjectId(5983548781331adf45ec7),"name":"replaced","age":55})
  

Ответ №1:

Проблема здесь : ObjectId(5983548781331adf45ec7)

ObjectId принимает строку из 24 шестнадцатеричных цифр.

 ObjectId("<24 hex digits here>")
  

Например. ObjectId("0123456789abcdef01234567")

Ответ №2:

Если вы используете внутренний исходный код, такой как groovy (с Grails GORM), вы можете попробовать следующий скрипт, который очень чистый и читаемый:

 def studentFromDB = db.student.findById("5983548781331adf45ec7")
studentFromDB.name = "replaced"
studentFromDB.age = 55
studentFromDB.save(flush: true, failOnError: true)
  

Если вы используете его непосредственно в mongo, вам следует использовать обновление MongoDB, например:

 db.student.update(
   {"_id":ObjectId(5983548781331adf45ec7) },
   {
      name: "replaced",
      age: 55
   },
   { upsert: true }
)
  

Ответ №3:

Я исправил это … ошибка в том, что я пропустил кавычки внутри ‘ObjectId’ исправленный скрипт `db.student.save({«_id»: ObjectId(«57fcf46763ecce707f071884″),»имя»:»rep_dsave»,»возраст»: 37}).

Спасибо 4J41 и rotemy

`

Комментарии:

1. Привет, MSGK: если ответ 4J41 решил проблему для вас, то правильнее всего проголосовать и принять ответ 4J41, а не публиковать его как отдельный ответ самостоятельно.