MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

$in wymaga tablicy jako drugiego argumentu, znaleziono:brak

Pierwsza opcja --> Użyj agregacji

Ponieważ niektóre dokumenty w Twojej kolekcji mogą zawierać lub nie permissions pole lub typ nie jest równy tablicy, dlatego otrzymujesz ten błąd.

Możesz znaleźć $type pola i jeśli nie jest to tablica lub nie istnieje w twoim dokumencie, możesz dodać ją jako tablicę za pomocą $addFields i $cond agregacja

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" ]
        }
      }
    }
  }}
])

Druga opcja -->

Przejdź do powłoki mongo lub robomongo w dowolnym używanym interfejsie graficznym i uruchom to polecenie

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. Jak poprawić wydajność wstawiania MongoDB

  2. Zmniejszenie rozmiaru pliku bazy danych MongoDB

  3. Wysyłanie zapytań o rozmiar tablicy wewnętrznej w MongoDB

  4. Spring data mongo używa OR w zapytaniu

  5. MongoDb — Zmień typ z Int na Double