sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoid::Versionering - hur kontrollerar man tidigare versioner?

Mongoid::Versioning-modulen lägger till ett fält med namnet version av typen Integer till dokumentet, det fältet registrerar versionen av det aktuella dokumentet, med början på 1, upp till det maximala (om definierat). Dessutom kommer du att ha ett inbäddat dokument "versioner" som kommer att skapas. Det finns sedan en before_save callback som tar hand om versionshanteringen åt dig.

Generellt skulle jag rekommendera ett maximum, men det är upp till dig. När det gäller hur man kommer åt dem, ja, du gav inte ett exempeldokument, så låt oss gå med en mycket enkel artikel som ett exempel:

#Make an empty post, just a title, version 1
post = Post.create(:title => "Hello World")
# Now add some "content" and save, version 2
post.content = "Woo - content"
post.save

Det ger oss ett dokument ungefär så här:

{
  "title": "Hello World",
  "content": "Woo - content",
  "comments": [
  ]
  "version": 2
  "versions": [
    { "title": "Hello World", "version": 1 }
  ]
}

Nu behöver du bara använda dina vanliga sökmekanismer för att komma till det:

post = Post.find(:first, :conditions => {:title => "Hello World"})

Ta ur den senaste versionen och sedan kan du söka efter tidigare versioner programmässigt. Jag skulle posta utdata, men jag har inte ställt in ett prov just nu.

På samma sätt behöver du bara köra db.namespace.find() baserat på titel, versionsfält om du vill göra det via skalet.

Förhoppningsvis är det vettigt.




  1. MongoDB $push vs $addToSet:Vad är skillnaden?

  2. Kan strikta JSON $datum användas i en MongoDB-fråga?

  3. Tvingar tillämpningen av ett 2dsphere-index på ett mongoose-schema att platsfältet krävs?

  4. MongoError:Alternativet 'markör' krävs, förutom för aggregering med förklara-argumentet