2016-03-28 9 views
4

MongoDB collection "Test" enthält einen Datensatz:Mungo ODM: NumberInt ist nicht definiert

{ "_id" : ObjectId("56f53cded3095c203024a884"), status : 0 } 

I verbunden wurde durch Node.js (Mungo-Treiber) mongo. Definieren Schema für diese Sammlung:

"Test" : { 
    status : { type : Number, default : 0 } 
} 

Feld „Status“ ist ein binäres Flag, muss sein Geschäft nur 0 oder 1 Zahlenwert. Ich will diesen Flag mit Abfrage-Update ändern:

test.update({ 'status' : 0 }, { $bit : { 'status' : { xor : NumberInt(1) } } }, function(err, result) { 
    if(err) { 
     console.log('err'); 
    } 
}); 

Mongoose nicht NumberInt() Funktion gefunden wurde:

ReferenceError: NumberInt is not defined 

Wenn ich einfache Nummer „1“ ohne Funktion setzen NumberInt(), ich habe keine Änderungen oder Fehler.

In MongoDB Shell, die Abfrage funktioniert perfekt. Wie kann ich mit NumberInt() in Mongoose Treiber arbeiten? Hat es einen anderen Namen?

Antwort

4

Es gab einige Diskussionen über die Unterstützung von NumberInt auf this feature request im Mungo-Repository auf GitHub. Es wurde dann als Plugin über das mongoose-int32 verfügbare NPM-Paket here hinzugefügt. Sie können dasselbe Verhalten wie MongoDBs NumberInt erreichen, indem Sie das Modul installieren und dann wie folgt verwenden.

var NumberInt = require('mongoose-int32'); 
+0

danke. Ich deklariere var Int32 = require ('mongoose-int32'); und führe eine Abfrage mit diesem aus: test.update ({'status': 0}, {$ bit: {'status': {xor: new Int32 (1)}}}); aber Feld 'Status' wird nicht wieder geändert (vielleicht bin ich etwas falsch gemacht? –

+0

Haben Sie versucht, die 'Art' von' Status' ein 'Int32' statt einer' Nummer'? –

+0

Sorry, das funktioniert gut. Danke! –