operasi atom MongoDB
mongodb tidak mendukung transaksi, oleh karena itu, dalam penerapan proyek Anda, memperhatikan hal ini. Apapun desain, kita tidak meminta mongodb memastikan integritas data.
Tapi mongodb memberikan banyak operasi atom, seperti menyimpan dokumen, mengubah, menghapus, dll, adalah operasi atom.
Entah ini adalah apa yang disebut operasi atom untuk menyimpan dokumen ke MongoDB, atau tidak disimpan ke MongoDB, dokumen tidak harus query utuh tidak akan terjadi.
model data atom
Perhatikan contoh berikut, buku-buku perpustakaan dan informasi transaksi.
Dalam salah satu contoh menggambarkan bagaimana memastikan bahwa dokumen tertanam bidang yang sama terkait operasi atom (update: update) bidang disinkronisasi.
book = { _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher_id: "oreilly", available: 3, checkout: [ { by: "joe", date: ISODate("2012-10-15") } ] }
Anda dapat menggunakan metode db.collection.findAndModify () untuk menentukan apakah buku dapat diperbarui dengan pemukiman baru dan informasi penagihan.
Tertanam dalam dokumen yang tersedia dan checkout bidang yang sama untuk memastikan bahwa bidang ini disinkronkan update:
db.books.findAndModify ( { query: { _id: 123456789, available: { $gt: 0 } }, update: { $inc: { available: -1 }, $push: { checkout: { by: "abc", date: new Date() } } } } )
operasi atom perintah yang umum digunakan
$ Set
Hal ini digunakan untuk menentukan kunci dan informasi kunci, jika kunci tidak ada dan menciptakan.
{ $set : { field : value } }
$ Unset
Untuk menghapus kunci.
{ $unset : { field : 1} }
$ Inc
$ Inc dapat menjadi nilai numerik dari dokumen (hanya untuk memenuhi persyaratan digital) kunci untuk meningkatkan atau operasi penurunan.
{ $inc : { field : value } }
$ Dorong
penggunaan:
{ $push : { field : value } }
Nilai tambah ke lapangan untuk masuk ke dalam, itu harus menjadi tipe array pekerjaan lapangan, jika lapangan tidak ada, tipe array baru ditambahkan.
$ PushAll
Dengan $ dorongan, tetapi sekali Anda dapat menambahkan beberapa nilai dalam bidang larik.
{ $pushAll : { field : value_array } }
$ Pull
Untuk menghapus bidang dari array nilai nilai yang sama.
{ $pull : { field : _value } }
$ AddToSet
Menambahkan nilai ke array, dan hanya jika nilai tidak dalam array untuk meningkatkan.
$ Pop
Pertama atau elemen terakhir dari array dihapus
{ $pop : { field : 1 } }
$ Rename
Memodifikasi nama field
{ $rename : { old_field_name : new_field_name } }
$ Bit
operasi bit, tipe integer
{$bit : { field : {and : 5}}}
Operator pergeseran
> t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 3 }, { "by" : "jane", "votes" : 7 } ] } > t.update( {'comments.by':'joe'}, {$inc:{'comments.$.votes':1}}, false, true ) > t.find() { "_id" : ObjectId("4b97e62bf1d8c7152c9ccb74"), "title" : "ABC", "comments" : [ { "by" : "joe", "votes" : 4 }, { "by" : "jane", "votes" : 7 } ] }