MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Mongoose:Прехвърлянето към ObjectId не бе успешно за стойност

Примерът от документите на mongoose, който посочихте, използва Number за personSchema._id поле и ObjectId за останалите.

Предполагам, че правят това в примера само за да демонстрират, че е възможно да се използва и двете. Ако не посочите _id в схемата, ObjectId ще бъде по подразбиране.

Тук всички ваши записи имат _id поле, което е ObjectId , но вие се отнасяте към тях като към числа. Освен това, полета като personID и taskID не съществуват, освен ако не сте пропуснали частта, в която ги дефинирате.

Ако сте искали да използвате числа за всичките си _id полета, ще трябва да дефинирате това в схемите.

var newsSchema = new Schema({
  _id: Number,
  _creator: {type: ObjectId, ref: "Person"},
  // ...
})

var personSchema = new Schema({
  _id: Number,
  // ...
})

След това, за да създадете новина с определен идентификатор и да го присвоите на създател:

var tony = new Person({_id: 0});
var newsItem = new NewsItem({_id: 0, creator: tony.id});

Тук обаче трябва да се отбележи, че когато използвате нещо различно от ObjectId като _id поле, вие поемате отговорността сами да управлявате тези ценности. ObjectId се генерират автоматично и не изискват допълнително управление.

Редактиране:Забелязах също, че съхранявате препратки от двете страни на вашите асоциации. Това е напълно валидно и може да искате да го направите понякога, но имайте предвид, че ще трябва сами да се погрижите за съхраняването на препратките в pre кука.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Проверка дали вложеният масив съдържа подмасив

  2. Как да сортирате mongodb с pymongo

  3. Как да напишем приложение на Python, което поддържа множество бази данни

  4. Използване на execPopulate()

  5. Spark не изпълнява задачи