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

Zaktualizuj zagnieżdżony element tablicy w mongodb

Wymagane kilka poprawek w zapytaniu, w przeciwnym razie jest prawie na miejscu. Aktualizacja nie działa, ponieważ $elemMatch dla attributeSet (tablica dokumentów) ma nastąpić na id właściwość tych dokumentów do filtrowania, a nie attributeSet.id , nie domyśli się, co to jest. Zagnieżdżony element elemMatch nie jest wymagany, po prostu użyj notacji z kropkami .

Aby debugować, możesz wypróbować to za pomocą zapytania wyszukiwania.

Zapytanie (powłoka):

db.collection.findOneAndUpdate(
  {
    _id: settingsToBeUpdated._id,
    attributeSet: {
      $elemMatch: {
        id: attributeSetId,
        "attributes.id": id
      }
    }
  },
  {
    $set: {
      "attributeSet.$[as].attributes.$[a].attributeName":
        attributeDto.attributeName,
      "attributeSet.$[as].attributes.$[a].defaultValue":
        attributeDto.defaultValue,
      "attributeSet.$[as].attributes.$[a].isRequired": attributeDto.isRequired
    }
  },
  {
    arrayFilters: [{ "as.id": attributeSetId }, { "a.id": id }],
    returnNewDocument: true
  }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyodrębnianie listy podciągów z MongoDB za pomocą wyrażenia regularnego

  2. mongodb:jak mogę zobaczyć czas wykonania polecenia agregującego?

  3. Spring Data MongoDB:Projekcje i agregacje

  4. Java:Jak wstawić hashmapę do MongoDB?

  5. Replika MongoDB ustawiona na platformie Azure, gdzie skierować zaporę?