Ich habe eine große Sammlung von 300 question
Objekten in einer Datenbank test
. Über die interaktive Shell von MongoDB kann ich problemlos mit dieser Sammlung interagieren. Wenn ich jedoch versuche, die Sammlung über Mongoose in einer express.js-Anwendung abzurufen, wird ein leeres Array angezeigt.
Meine Frage ist, wie kann ich auf dieses bereits vorhandene Dataset zugreifen, anstatt es in Express neu zu erstellen? Hier ist ein Code:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
mongoose.model('question', new Schema({ url: String, text: String, id: Number }));
var questions = mongoose.model('question');
questions.find({}, function(err, data) { console.log(err, data, data.length); });
Dies gibt aus:
null [] 0
Model.collection.insert();..
mongoose.connect("mongodb://localhost/fromlab"); var Schema = mongoose.Schema; var User = mongoose.model("User", new Schema({}), "users"); User.find({}, function(err, doc){ console.log((doc)) })
Hier ist eine Abstraktion von Will Nathans Antwort, wenn jemand nur eine einfache Add-In-Funktion zum Kopieren und Einfügen möchte:
einfach tun
find(collection_name, query, callback);
, um das Ergebnis zu erhalten.Wenn ich beispielsweise ein Dokument {a: 1} in einer Sammlung 'foo' habe und dessen Eigenschaften auflisten möchte, gehe ich folgendermaßen vor:
quelle
Sie können so etwas tun, als auf die nativen Mongodb-Funktionen in Mungo zuzugreifen:
quelle
Ich hatte das gleiche Problem und konnte eine schemalose Abfrage unter Verwendung einer vorhandenen Mongoose-Verbindung mit dem folgenden Code ausführen. Ich habe eine einfache Einschränkung 'a = b' hinzugefügt, um zu zeigen, wo Sie eine solche Einschränkung hinzufügen würden:
quelle
question
den obigen Code durchfs.files
und Sie können loslegen.Bist du sicher, dass du mit der Datenbank verbunden bist? (Ich frage, weil ich keinen angegebenen Port sehe)
Versuchen:
Sie können auch eine "Show-Sammlung" in der Mongo-Shell erstellen, um die Sammlungen in Ihrer Datenbank anzuzeigen. Versuchen Sie vielleicht, einen Datensatz über Mungo hinzuzufügen und zu sehen, wo er landet.
Nach dem Aussehen Ihrer Verbindungszeichenfolge sollten Sie den Datensatz in der Datenbank "test" sehen.
Ich hoffe es hilft!
quelle
questions
Sammlung gespeichert, wenn sich die Daten, auf die ich zugreifen möchte, in einerquestion
Sammlung befinden. Pluralisiert Mongoose automatisch Sammlungs- / Modellnamen?Etwas anderes, das zumindest für mich nicht offensichtlich war, war, dass bei Verwendung des dritten Parameters von Mongoose, um zu vermeiden, dass die tatsächliche Sammlung durch eine neue mit demselben Namen ersetzt wird, dies
new Schema(...)
eigentlich nur ein Platzhalter ist und die Existenz nicht beeinträchtigt Schema sofunktioniert einwandfrei und gibt alle Felder zurück - auch wenn das tatsächliche (entfernte) Schema keines dieser Felder enthält. Mungo wird es immer noch wollen
new Schema(...)
, und eine Variable wird es mit ziemlicher Sicherheit nicht hacken.quelle