sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB Embedded Objects har intet ID (nul værdi)

MongoDB CRUD-operationer (insert , update , find , remove ) opererer alle udelukkende på dokumenter på øverste niveau -- selvom du selvfølgelig kan filtrere efter felter i indlejrede dokumenter. Indlejrede dokumenter returneres altid i det overordnede dokument.

_id felt er et obligatorisk felt i det overordnede dokument og er typisk ikke nødvendigt eller til stede i indlejrede dokumenter. Hvis du har brug for en unik identifikator, kan du helt sikkert oprette dem, og du kan bruge _id felt for at gemme dem, hvis det er praktisk for din kode eller din mentale model; mere typisk er de opkaldt efter det, de repræsenterer (f.eks. "brugernavn", "otherSystemKey" osv.). Hverken MongoDB selv eller nogen af ​​driverne vil automatisk udfylde en _id felt undtagen på dokumentet på øverste niveau.

Specifikt i Java, hvis du ønsker at generere ObjectId-værdier for _id felt i indlejrede dokumenter, kan du gøre det med:

someEmbeddedDoc._id = new ObjectId();


  1. Aggregate $lookup returnerer ikke elementernes oprindelige array-rækkefølge

  2. MongoDB $sekund

  3. Givet en liste over id'er, hvad er den bedste måde at forespørge på, hvilke id'er der ikke findes i samlingen?

  4. Hvordan sletter jeg alt i Redis?