Ich versuche nur ein bestimmtes Feld mit auszuwählen
exports.someValue = function(req, res, next) {
//query with mongoose
var query = dbSchemas.SomeValue.find({}).select('name');
query.exec(function (err, someValue) {
if (err) return next(err);
res.send(someValue);
});
};
Aber in meiner json-Antwort erhalte ich auch die _id, mein Dokumentschema hat nur zwei Felder, _id und name
[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
Warum???
javascript
node.js
mongodb
mongoose
TlonXP
quelle
quelle
.select
nur ein Filter, um ein Feld auszuwählen, nachdem Sie all das erhalten haben. Meine Empfehlung lautet.find({}, 'name -_id')
.find({}, 'name -_id')
scheint nicht zu funktionieren?Es gibt jetzt einen kürzeren Weg, dies zu tun:
Wenn Sie die meisten davon
Schema fields
möchten und nur einige weglassen möchten, können Sie dem Feldname
ein vorangestellt haben-
. Für die Ex"-name"
im zweiten Argument wird nicht enthaltenname
Feld in der doc , während die hier gegebenen Beispiel haben nur dasname
Feld in den zurückgegebenen Dokumente.quelle
blogItemModel.find({}, 'title intro_image intro_text publish_date', function(err, blog_items){..
Es gibt eine bessere Möglichkeit, mit Native MongoDB-Code in Mongoose damit umzugehen.
http://docs.mongodb.org/manual/reference/method/db.collection.find/
Hinweis:
Die Liste der hier aufgeführten Objekte wird nicht zurückgegeben / gedruckt.
quelle
DB-Daten
Abfrage
Ausgabe:
Arbeitsprobenspielplatz
Verknüpfung
quelle
Ausschließen
Der folgende Code ruft alle Felder außer dem Passwort in jedem Dokument ab:
Ausgabe
Einschließen
Der folgende Code ruft nur das E-Mail-Feld in jedem Dokument ab:
Ausgabe
quelle
Der genaue Weg, dies zu tun, besteht darin, die
.project()
Cursormethode mit dem neuenmongodb
und demnodejs
Treiber zu verwenden.quelle
.project()
funktioniert nur mit Aggregat. Wenn Sie es mit find verwenden möchten, verwenden Sie das zweite Argument infind({},{ name: 1, _id: 0 })
method.Beispielsweise,
0 bedeutet ignorieren
1 bedeutet zeigen
quelle