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

Cara mencari di array array objek di mongodb

Katakanlah Anda ingin mencari awaiting status untuk koleksi users

db.users.find({"version.files.status":"awaiting"}).pretty()

Ini akan secara otomatis mencari di dalam array.

Namun, memperbarui sedikit berbeda dan Anda harus menggunakan arrayFilter :

db.users.updateOne(
  {
    "version.files._id": "606592b3c5d509071857f6e8",
  },
  {
    $set: {
      "version.$[version].files.$[file].url": "something else",
    },
  },
  {
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);

Pastikan Anda memiliki indeks di find permintaan:

Untuk contoh di atas

db.users.createIndex({"version.files._id":1},{background:true})

Banyak lagi contoh yang tersedia di Mongo Doc

EDIT

Sesuai komentar Anda, berikut adalah contoh kerja:

db.users.findOneAndUpdate(
  { "version.files._id": "606592b3c5d509071857f6e8" },
  {
    $set: {
      "version.$[version].files.$[file].url": "Test URL",
      "version.$[version].files.$[file].status": "Test status",
    },
  },
  {
    returnNewDocument: true,
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb menggabungkan kueri agregat

  2. Beberapa kondisi bergabung menggunakan operator $lookup

  3. Rails Mongoid gagal mengautentikasi - gagal dengan kesalahan 13:tidak diizinkan untuk kueri di my_db.my_collection

  4. Meteor Mongo findOne mengembalikan metode yang tidak ditentukan

  5. Bagaimana cara menyimpan gambar byte[] di mongodb untuk proses Doocr