sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB inbäddade objekt har inget ID (nullvärde)

MongoDB CRUD-operationer (insert , update , find , remove ) alla fungerar uteslutande på dokument på toppnivå -- även om du naturligtvis kan filtrera efter fält i inbäddade dokument. Inbäddade dokument returneras alltid inom det överordnade dokumentet.

_id fältet är ett obligatoriskt fält i det överordnade dokumentet och är vanligtvis inte nödvändigt eller finns i inbäddade dokument. Om du behöver en unik identifierare kan du säkert skapa dem, och du kan använda _id fält för att lagra dem om det är lämpligt för din kod eller din mentala modell; mer typiskt är de uppkallade efter vad de representerar (t.ex. "användarnamn", "otherSystemKey", etc). Varken MongoDB själv eller någon av drivrutinerna kommer automatiskt att fylla i ett _id utom i dokumentet på översta nivån.

Specifikt i Java, om du vill generera ObjectId-värden för _id fältet i inbäddade dokument kan du göra det med:

someEmbeddedDoc._id = new ObjectId();


  1. Konvertera datum från millisekunder till ISODate-objekt

  2. Hur gör man en Mongo-aggregationsfråga i Spring Data?

  3. Mongoid:hitta genom Array of ids

  4. Mongoose lovar dokumentation säger att frågor inte är löften?