2016-06-19 4 views
4

Вот моя Mongoose схема:Документ топка с Mongoose

var DealSchema = new Schema({ 
    deal:{ 
     dealid:{ 
      type: String, 
      require: true, 
      unique: true, 
     }, 
     title: String, 
    }, 

    // Embedded sub-document 
    details: { 
     detail: String, 
     price: Number // USE: deal.details.price 
    } 
}) 

Моя вставка заявление выглядит следующим образом:

db.deals.insert({ 
    deal.dealid: '1', 
    deal.title: 'deal', 

    details.detail: 'Free Food', 
    details.price: 200 
}) 

ошибка я получаю:

SyntaxError: missing : after property id @(shell):2:4 

Не уверен, что это ошибка - как я могу это исправить?

ответ

2

Ваш объект синтаксис вставки неверно - оно должно быть надлежащим JSON, если не использовать точечную нотацию, как @krl объяснено.

Предполагая, что вы используете Мангуст:

db.deals.insert({ 
    deal: { 
     dealid: '1', 
     title: 'deal' 
    }, 
    details: { 
     detail: 'Free Food', 
     price: 200 
    } 
}); 
+1

Спасибо. Я изучил оба метода. Правильный путь json и встроенный документ с помощью метода dot (.). – impossible

1

Формат JSON в этом вызове недействителен. Попробуйте это:

db.deals.insert({ 
    deal: { 
      dealid: '1', 
      title: 'deal' 
    }, 

    details: { 
      detail: 'Free Food', 
      price: 200 
    } 
}); 
3

Чтобы указать или доступ к полю вложенного документа с помощью точечной нотации, сцепить внедренный имя документа с точкой и именем поля, и заключите (.) в кавычках (допустимы как одинарные, так и двойные кавычки) (см. Documents > Dot Notation > Embedded Documents):

db.deals.insert({ 
    'deal.dealid': '1', 
    'deal.title': 'deal', 

    'details.detail': 'Free Food', 
    'details.price': 200 
}) 
Смежные вопросы