Plugin Mongoosastic für die Verbindung zwischen Mongoose ODM und Elasticsearch

Kurzhinweis: James Carr hat gestern ein Plugin namens Mongoosastic für Mongoose ODM veröffentlicht, welches eine Verbindung eines Mongoose Models zu Elasticsearch erlaubt. Es fügt eine neue Methode „search“ in ein Model ein, welche im Hintergrund auf Elasticsearch zugreift. Die Indexierung des Models erfolgt parallel im Hintergrund. Bei Bedarf kann man dann dann auch nur bestimmte Felder indexieren lassen und über ein Feature namens „Hydration“ die Daten mit Daten aus der MongoDB vervollständigen lassen. Einfach die Doku lesen für weitere Infos.

Mongoose ODM 2.7.0 ist erschienen

Vor ein paar Tagen wurde Mongoose 2.7.0 freigegeben. Es wird von den Machern als das letzte Release von 3.0 gesehen. In diesem Release soll ein Cleanup der API erfolgen, damit diese näher an der originalen MongoDB-API ist. Daher wird jetzt als Vorbereitung in 2.7.0 schon aufgeräumt. Hier die Übersicht der veralteten (Spalte „Deprecated“) Methoden und welche Alternativen es gibt (Spalte „Alternative“):

Deprecated                    Alternative
Query#$or                     Query#or
Query#$nor                    Query#nor
Query#$gt                     Query#gt
Query#$gte                    Query#gte
Query#$lt                     Query#lt
Query#$lte                    Query#lte
Query#$in                     Query#in
Query#$nin                    Query#nin
Query#$ne                     Query#ne
Query#$all                    Query#all
Query#$regex                  Query#regex
Query#$size                   Query#size
Query#$maxDistance            Query#maxDistance
Query#$within                 Query#within
Query#$box                    Query#box
Query#$center                 Query#center
Query#$centerSphere           Query#centerSphere
Query#$slice                  Query#slice 
Query#run                     Query#exec
Query#notEqualTo              Query#notEqualTo
Query#wherein                 Query#within
Query#fields                  Query#select
Query#asc                     Query#sort
Query#desc                    Query#sort
Query#only                    Query#select
Query#exclude                 Query#select
Query#each                    Query#stream
MongooseArray#$push           MongooseArray#push
MongooseArray#$pull           MongooseArray#pull
MongooseArray#$pushAll        MongooseArray#push
MongooseArray#pushAll         MongooseArray#push
MongooseArray#$pullAll        MongooseArray#pull
MongooseArray#pullAll         MongooseArray#pull
MongooseArray#$unshift        MongooseArray#unshift
MongooseArray#$addToSet       MongooseArray#addToSet
Document#commit               MongooseArray#markModified
Mongoose#connectSet           MongooseArray#connect
Mongoose#createSetConnection  MongooseArray#createConnection
MongooseNumber#$inc           removed
MongooseNumber#increment      removed
MongooseNumber#decrement      removed

Die gesamte Diskussion zum Release 2.7.0 findet sich hier.

Sortieren von „populated documents“ in Mongoose ODM

Heute bin ich auf die Frage gestoßen, wie man populated documents in Mongoose sortiert. Die Antwort fand ich hier. Zunächst ist der Aufruf von populate wichtig:

Model.find().populate(path, fields, conditions, options);

Und als „options“ kann man nun die sortierung hinterlegen:

{ sort: 'order' } // ascending
{ sort: [['order', 1 ]] } // ascending
{ sort: [['order', 'asc' ]] } // ascending
{ sort: [['order', 'desc' ]] } // ascending
{ sort: [['order', -1 ]] } // descending
{ sort: [['order', 'desc' ]] } // descending
{ sort: [['order', 'descending' ]] } // descending