it-swarm.com.de

Mungo, Wählen Sie ein bestimmtes Feld mit Suchen

Ich versuche mit nur ein bestimmtes Feld 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???

90
TlonXP

Das Feld _id Ist immer vorhanden, sofern Sie es nicht ausdrücklich ausschließen. Verwenden Sie dazu die Syntax -:

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select('name -_id');

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};

Oder explizit über ein Objekt:

exports.someValue = function(req, res, next) {
    //query with mongoose
    var query = dbSchemas.SomeValue.find({}).select({ "name": 1, "_id": 0});

    query.exec(function (err, someValue) {
        if (err) return next(err);
        res.send(someValue);
    });
};
148
Neil Lunn

Es gibt einen kürzeren Weg, dies jetzt zu tun:

exports.someValue = function(req, res, next) {
    //query with mongoose
    dbSchemas.SomeValue.find({}, 'name', function(err, someValue){
      if(err) return next(err);
      res.send(someValue);
    });
    //this eliminates the .select() and .exec() methods
};

Wenn Sie den größten Teil von Schema fields Und nur einige davon weglassen möchten, können Sie dem Feld name ein - Voranstellen. Zum Beispiel wird "-name" Im zweiten Argument nicht ​​ das Feld name in das Dokument einschließen, wohingegen das hier angegebene Beispiel dies tut haben nur das Feld name in den zurückgegebenen Dokumenten.

59
Akash

Es gibt eine bessere Möglichkeit, mit Native MongoDB-Code in Mongoose damit umzugehen.

exports.getUsers = function(req, res, next) {

    var usersProjection = { 
        __v: false,
        _id: false
    };

    User.find({}, usersProjection, function (err, users) {
        if (err) return next(err);
        res.json(users);
    });    
}

http://docs.mongodb.org/manual/reference/method/db.collection.find/

Hinweis:

var usersProjection

Die Liste der hier aufgelisteten Objekte wird nicht zurückgegeben/gedruckt.

19
ElvinD

DB-Daten

[
  {
    "_id": "70001",
    "name": "peter"
  },
  {
    "_id": "70002",
    "name": "john"
  },
  {
    "_id": "70003",
    "name": "joseph"
  }
]

Abfrage

db.collection.find({},
{
  "_id": 0,
  "name": 1
}).exec((Result)=>{
    console.log(Result);
})

Ausgabe:

[
  {
    "name": "peter"
  },
  {
    "name": "john"
  },
  {
    "name": "joseph"
  }
]

Arbeitsbeispiel Spielplatz

Link

7

Die genaue Methode hierfür ist die Verwendung der .project() Cursormethode mit der neuen mongodb und nodejs Treiber.

var query = await dbSchemas.SomeValue.find({}).project({ name: 1, _id: 0 })
3
Ashh