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

Bagaimana cara $mengatur item sub-sub-array di MongoDB

Jika Anda mengetahui indeks dalam array, Anda dapat mengakses elemen array secara langsung menggunakan notasi titik.

update(
{ _id: ObjectId(xxxx) },
{ $set: { 'columns.0.panels.0.top' : 125}}
)

Pastikan Anda membungkus jalur bernotasi titik dalam tanda kutip sebagai string.

Sunting:

Untuk memberikan detail lebih lanjut tentang bagaimana ini bisa bekerja secara dinamis, saya akan memberikan contoh di PHP:

$action = array("columns.$colNum.panels.$panelNum" => $newValue);

Ya ada operator posisi , tetapi tampaknya tidak cukup mahir untuk mengubah array di dalam array, ini dapat berubah di MongoDB 1.7.0

Ada alternatif yang dapat Anda lakukan daripada mencoba memasukkan informasi ini ke dalam dokumen bersarang. Cobalah untuk meratakannya. Anda dapat membuat koleksi yang memiliki objek panel &kolom:

objek kolom:

{
_id: // MongoId
type: 'column',
user: 'username',
order: 1,
width: 30,
}

objek panel:

{
_id: //MongoId
type: 'panel',
user: 'username',
parentColumn: //the columns _id string
top: 125,
left: 100
}

Kemudian Anda dapat menemukan semua kolom milik pengguna dengan melakukan:

find({ type: 'column', user:'username'});

Anda dapat menemukan semua panel untuk kolom tertentu dengan melakukan:

find({type: 'panel', columnOwner:'ownerID'});

Karena setiap kolom dan panel akan memiliki ID unik yang diberikan oleh MongoDB, Anda dapat dengan mudah menanyakan dan mengatur opsi secara atom.

update({'_id': ObjectId('idstring')}, {$set : { 'top' : 125}});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Fragmentasi data dalam koleksi mongo

  2. MongoDB, tambahkan { field :value } baru di dokumen tersemat yang ada dengan notasi titik multi level?

  3. mengonversi dari blob ke biner untuk menyimpannya ke mongodb

  4. MongoDB GridFS - Apakah itu nama file atau nama file

  5. Array kosong mencegah dokumen muncul dalam kueri