MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Luwak:Cast ke ObjectId gagal untuk nilai

Contoh dari dokumen luwak yang Anda referensikan menggunakan Number untuk personSchema._id bidang, dan ObjectId untuk yang lain.

Saya kira mereka melakukan ini dalam contoh hanya untuk menunjukkan bahwa itu mungkin untuk digunakan. Jika Anda tidak menentukan _id dalam skema, ObjectId akan menjadi default.

Di sini, semua catatan Anda memiliki _id bidang yang merupakan ObjectId , namun Anda memperlakukannya seperti angka. Selanjutnya, bidang seperti personID dan taskID tidak ada, kecuali Anda mengabaikan bagian di mana Anda mendefinisikannya.

Jika Anda ingin menggunakan angka untuk semua _id Anda bidang, Anda harus mendefinisikannya dalam skema.

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

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

Kemudian untuk membuat item berita dengan ID tertentu, dan menetapkannya ke pembuat:

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

Namun hal yang perlu diperhatikan di sini adalah ketika Anda menggunakan sesuatu selain ObjectId sebagai _id lapangan, Anda mengambil tanggung jawab untuk mengelola nilai-nilai ini sendiri. ObjectId dibuat secara otomatis dan tidak memerlukan manajemen tambahan.

Sunting:Saya juga memperhatikan bahwa Anda menyimpan referensi di kedua sisi asosiasi Anda. Ini benar-benar valid dan Anda mungkin ingin melakukannya kadang-kadang, tetapi perhatikan bahwa Anda harus berhati-hati menyimpan referensi sendiri di pre kait.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB vs MySQL NoSQL - Mengapa Mongo Lebih Baik

  2. Mengelompokkan dokumen berpasangan menggunakan agregasi mongo

  3. Agregasi Mongodb berdasarkan Hari lalu Jam

  4. bagaimana cara menyimpan dataframe di mongodb menggunakan pyspark?

  5. Spring Data MongoDB Repository dengan nama koleksi khusus