cari

Rumah  >  Soal Jawab  >  teks badan

mongodb - Bagaimanakah $addToSet menentukan medan sebagai medan semak untuk kewujudan?

Terdapat dokumen, dan salah satu atributnya ialah tatasusunan dokumen adakah sama? Bolehkah anda menentukan atribut
{_id:0,
user:[{id:1,name:a}]
}
Contohnya, untuk rekod di atas, saya ingin menambah data ke pengguna , jika id adalah 1, ia bermakna ia sudah wujud, jadi ia tidak akan ditambah, jika tidak, ia akan ditambahkan pada tatasusunan pengguna
$addToSet boleh mencapai keperluan ini
Terima kasih

ringa_leeringa_lee2791 hari yang lalu937

membalas semua(1)saya akan balas

  • 世界只因有你

    世界只因有你2017-05-02 09:27:30

    Keunikan subdokumen yang anda perlukan tidak boleh dicapai dengan $addToSet. Terdapat dua idea untuk rujukan:

    1. Cuba lihat sama ada anda boleh mencipta indeks unik komposit dalam perniagaan

    Contohnya: Buat indeks komposit unik pada nama dan user.id teks {_id, nama, nombor, pengguna[{id, nama}]}

    2. Kawalan kod

    db.test.update({ "_id" : ObjectId(""), "user.id" : {$ne : value }}, {$push : { user : { id : 1 , name : "a" }}})
    
    db.test.update({ "_id" : ObjectId(""), "user.id" : {$nin : [] }}, {$push : { user : { id : 1 , name : "a" }}})
    

    Sebelum mengemas kini, gunakan $ne atau $nin untuk menentukan sama ada user.id wujud dalam id sedia ada Jika ia tidak wujud, anda boleh mengemas kini.

    Untuk rujukan.

    Sayangi MongoDB! Selamat Berseronok!

    balas
    0
  • Batalbalas