Ich frage dies, weil ich beim Schreiben von Komponententests die Testdatenbank löschen und einige Initialisierungsdaten einfügen sowie die Daten in Mongodb beim Testen überprüfen möchte. Also brauche ich rohe Operationen, um mongodb.
Wie macht man das bei Mungos? Was ich jetzt tun kann, ist einfach die Verbindung herzustellen und kein Dokument auf der offiziellen Website des Mungos zu finden.
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
// get the connection
var conn = mongoose.connection;
Aber wie geht's:
- Löschen Sie die Datenbank
- Erstellen Sie eine Sammlung
- Schreiben Sie einige Daten in eine Sammlung
- eine Sammlung abfragen
- eine Sammlung ablegen
Sie können Mongodb-Befehle mit dem nativen NodeJS-Treiber ausführen
mongoose.connection.db
. Dadurch wird auf den NodeJS MongoDB-Treiber zugegriffen, und Sie müssen kein Mungo-Modell erstellen .Eine Beilage
mongoose.connection.db.collection('userCollection').insert({ username: 'captain1', firstName: 'Steve', lastName: 'Rogers', });
Ein Update
mongoose.connection.db.collection('userCollection').update( {someFilterProperty: true}, {$set: { siteId: new mongoose.mongo.ObjectId('56cb91bdc5946f14678934ba'), hasNewSiteId: true}}, {multi: true}); });
Sie können jeden für diese Datenbank spezifischen Befehl mithilfe der Datenbankverbindungs-Datenbankreferenz senden
mongoose.connection.db
.Dies ist das Mungo-API-Dokument: http://mongoosejs.com/docs/api.html#connection_Connection-db
Wichtig : Beachten Sie, dass sich einige Optionen im NodeJS-Treiber von den Optionen in MongoDB-Shell-Befehlen unterscheiden. Zum Beispiel
findOneAndUpdate()
verwendetreturnOriginal
anstelle vonreturnNewDocument
. Weitere Informationen hierzu finden Sie hier und hier .quelle
Connection.prototype.db
: mongoosejs.com/docs/api.html#connection_Connection-dbMongoose.connection.db.collection('collectionname').find({}).toArray((err,results) => { console.log(results); });
Verwenden Sie diese Option, um Rohoperationen im Mungo auszuführen.
Model_name.collection.insertMany(array, { ordered: false },function(err, success){ console.log(success); });
quelle
Haben die gleichen Probleme gehabt, DBs nach Tests zu bereinigen, und die tatsächliche Antwort nur wegen fehlender "Codeblöcke" verwirrt, also graben Sie Dokumente / Code noch einmal, um dies zeitsparend zu veröffentlichen;)
Die Mongoose-Sammlung erweitert die Mongodb-Sammlung
Gleiches gilt für die Verbindung:
So können alle "RAW" -Operationen für die Erfassung / Verbindung ausgeführt werden, vorausgesetzt, Sie haben
var connection = mongoose.connection;
dann:
1. Lassen Sie die Datenbank fallen:
2.Erstellen Sie eine Sammlung
connection.collection('newcollection') // creates if not exists
3.Schreiben Sie einige Daten in eine Sammlung
connection.collection('mybenotnewcollection').bulkWrite([ { insertOne: { whatewer: { you: 'need' } } }, ]);
4. eine Sammlung abfragen
Das ist offensichtlich keine Frage: findAll, find, aggregieren, alles erlaubt (siehe die Dokumente )
5.tropfen Sie eine Sammlung
connection.collection('notsonewcollection').drop()
quelle
const mongoose = require('mongoose'); mongoose.connect(uri, options); var db = mongoose.connection; db.once('open', function () { db.collection('collection').find().toArray(function(err, result){ console.log(result); }); }
quelle
Das Mungo-Objekt verfügt über einen Mongo-Prototyp, mit dem Sie auf den nativen Mongo-Treiber zugreifen können
quelle