sql >> Databáze >  >> NoSQL >> MongoDB

$in vyžaduje pole jako druhý argument, nalezeno:chybí

První možnost --> Použít agregaci

Protože vaše některé dokumenty ve vaší sbírce mohou, ale nemusí obsahovat permissions pole nebo se typ nerovná poli, proto se zobrazuje tato chyba.

Můžete najít $type pole a pokud to není pole nebo ve vašem dokumentu neexistuje, můžete jej přidat jako pole pomocí $addFields a $cond agregace

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

Druhá možnost -->

Přejděte do svého mongo shellu nebo robomonga v libovolném GUI, které používáte, a spusťte tento příkaz

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



  1. Architektura pro Redis cache a Mongo pro perzistenci

  2. Jak serializovat mapu v Javě pro uložení v Redis?

  3. Tipy pro upgrade serveru Percona pro MongoDB

  4. Je možné získat pole v pořadí projekce v Agregation Frameworks mongo