sql >> Database >  >> NoSQL >> MongoDB

$in vereist een array als tweede argument, gevonden:missing

Eerste optie --> Aggregatie gebruiken

Omdat sommige van de documenten in uw collectie al dan niet permissions . kunnen bevatten veld of is type niet gelijk aan array, daarom krijg je deze foutmelding.

Je kunt de $type . vinden van het veld en als het geen array is of niet in je document voorkomt, dan kun je het als een array toevoegen met $addFields en $cond aggregatie

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

Tweede optie -->

Ga naar je mongo-shell of robomongo op elke GUI die je gebruikt en voer dit commando uit

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



  1. hoe de versie van de redis-instantie te controleren?

  2. MongoDB Date()-methode

  3. Fout bij het verbinden met MongoDb Atlas Server

  4. MongoDB Toon onderliggende items in één-op-veel-relatie