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

$in membutuhkan array sebagai argumen kedua, ditemukan:hilang

Opsi pertama -> Gunakan agregasi

Karena beberapa dokumen dalam koleksi Anda mungkin atau mungkin tidak mengandung permissions field atau tipenya tidak sama dengan array itu sebabnya Anda mendapatkan kesalahan ini.

Anda dapat menemukan $type bidang dan jika itu bukan larik atau tidak ada di dokumen Anda, Anda dapat menambahkannya sebagai larik dengan $addFields dan $cond agregasi

db.collection.aggregate([
  { "$addFields": {
    "permissions": {
      "$cond": {
        "if": {
          "$ne": [ { "$type": "$permissions" }, "array" ]
        },
        "then": [],
        "else": "$permissions"
      }
    }
  }},
  { "$project": {
    "filteredChildren": {
      "$filter": {
        "input": "$moduleChildren",
        "as": "moduleChild",
        "cond": {
          "$in": [ "$$moduleChild._id", "$permissions" ]
        }
      }
    }
  }}
])

Opsi kedua -->

Buka mongo shell atau robomongo Anda pada GUI apa pun yang Anda gunakan dan jalankan perintah ini

db.collection.update(
  { "permissions": { "$ne": { "$type": "array" } } },
  { "$set": { "permissions": [] } },
  { "multi": true }
)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Buat $elemMatch (proyeksi) mengembalikan semua objek yang cocok dengan kriteria

  2. Mongodb mengurutkan array dalam

  3. Aplikasi mirip Twitter menggunakan MongoDB

  4. Bagaimana DAN dan TIDAK di MongoDB $pencarian teks

  5. Cara membuat pengguna di mongodb dengan docker-compose