Ich möchte eine Mongodb-Sammlung filtern. Das Filterkriterium kommt von einer anderen Sammlung, z. die ID, die von einer Abfragezeichenfolge transportiert wird.node.js, mongo.db, db.collection.find mit Abfrageparameter 1 aus einer Variablen
Wenn die Abfrage-Filter (erster Parameter) es funktioniert gut fixiert ist:
collection.find({fsuser:/575f13cf6eb9d09fdf0f14c2/},{},function(e,docs){
res.render('notiz_tabelle', {
"notiz_tabelle": docs
});
}); //Ende find()
Jetzt möchte ich eine Variable statt/575f13cf6eb9d09fdf0f14c2 /.
Ich habe versucht, ein dynamisches Objekt zu verwenden:
//Dynamisches Objekt
var dynQueryObjekt = {};
dynQueryObjekt["fsuser"] = "/575f13cf6eb9d09fdf0f14c2/";
collection.find(dynQueryObjekt,{},function(e,docs){
res.render('notiz_tabelle', {
"notiz_tabelle": docs
});
}); //Ende find()
funktioniert nicht. Kann jemand eine Mongodb-Sammlung mit einer Variablen als Eingabe filtern?
Hier einige weitere Informationen: Version MongoDB 3.2.6. Der gesamte Code wie folgt aussieht:
/* GET Notizen DB page. */
router.get('/notiz_tabelle', function (req, res) {
var db = req.db;
//Query-String auslesen
var qstring1 = req.query;
console.log("Mitteilung");
//von JSON in String wandeln
var jsonString = JSON.stringify(qstring1);
console.log("Query-String: " + jsonString);
//Hash aus String kopiren
var subString = jsonString.substring(11, 35);
console.log("Teilstring: " + subString);
var collection = db.get('notizcollection');
//String in Befehl kopieren, wie??
jsonString = '{fsuser:/' + subString + '/}';
console.log("Json String: " + jsonString);
//Dynamisches Objekt
//var dynQueryObjekt = {};
//dynQueryObjekt["fsuser"] = "/575f13cf6eb9d09fdf0f14c2/";
// console.log("Dyn Objekt: "+JSON.stringify(dynQueryObjekt));
var dynQueryObjekt = {};
dynQueryObjekt["fsuser"] = new RegExp("/5762620c59a7aef450417047/", 'i');
//var jsonAusdruck=JSON.parse(jsonString);
//console.log("JSON Ausdruck: "+JSON.stringify(jsonAusdruck));
var someInput = '/5762620c59a7aef450417047/';
var reg = new RegExp(someInput, 'i');
//collection.find(jsonString, {}, function (e, docs) {
//collection.find({fsuser: /#{subString}/}, {}, function (e, docs) {
//collection.find({fsuser:/5762620c59a7aef450417047/},{},function(e,docs){ //funktioniert
//collection.find({"fsuser":"/5762620c59a7aef450417047/"},{},function(e,docs){ //fkt nicht, nur ohne Anf. Zeichen
collection.find(dynQueryObjekt, {}, function (e, docs) {
//collection.find({fsuser: {$regex: reg}}, {}, function (e, docs) {
res.render('notiz_tabelle', {
"notiz_tabelle": docs
});
});
});
Ihr Code unter der Annahme korrekt aussieht nur Sie versuchen, find by fuser (dh mit out regex) Haben Sie mit db.collection.find ("fsuser", "575f13cf6eb9d09fdf0f14c 2 ") auf Mongo Shell, ob Sie Ergebnisse bekommen? – notionquest
Ich versuchte in der Konsole: – Teri
Ich versuchte in der Konsole: 'db.notizcollection.find ({" fsuser ":"/5762620c59a7aef450417047/"}). Pretty()' => kein Fehler, kein Ergebnis, aber ohne Zitat markiert es funktioniert: 'db.notizcollection.find ({fsuser:/5762620c59a7aef450417047 /}). pretty()' funktioniert gut. – Teri