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

Memasang di Mongo DB dan masalah Id

Saya mengalami masalah serupa. Saya ingin memasukkan dokumen menggunakan driver C# resmi. Saya memiliki kelas seperti ini:

public class MyClass
{
    public ObjectId Id { get; set; }
    public int Field1 { get; set; }
    public string Field2 { get; set; }
}

Di konsol saya akan menulis:db.collection.update({Field1: 3},{Field1: 3, Field2: "value"}) dan itu akan berhasil. Dalam C# saya menulis:

collection.Update(Query.EQ("Field1", 3),
                Update.Replace(new MyClass { Field1 = 3, Field2 = "value" }),
                UpdateFlags.Upsert);

dan itu tidak berhasil! Karena driver menyertakan id kosong dalam pernyataan pembaruan dan ketika saya memasukkan dokumen kedua dengan nilai pengecualian Field1 yang berbeda E11000 duplicate key error index dilempar (dalam hal ini Mongo mencoba memasukkan dokumen dengan _id yang sudah ada di db).

Ketika saya membuat _id sendiri (seperti topik starter) saya menemukan pengecualian yang sama (mongo cannot change _id of a document ) untuk menambahkan objek dengan nilai Field1 yang ada.

Solusi adalah untuk menandai properti Id dengan atribut [BsonIgnoreIfDefault] (dan tidak menginisialisasi itu). Dalam hal ini driver menghilangkan bidang _id dalam pernyataan pembaruan dan MongoDb menghasilkan Id jika perlu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - Kerangka Agregasi (Jumlah Total)

  2. Bagaimana Anda menerapkan ID utama yang bertambah secara otomatis di MongoDB?

  3. Konversikan kondisi kueri JSON ke operasi MongoDB/Mongoose

  4. Bagaimana cara menguji indeks Mongo dalam tes integrasi?

  5. Data kedaluwarsa luwak tetapi tetap di database