Estoy intentando seleccionar solo un campo específico con
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);
});
};
Pero en mi respuesta json también recibo el _id, el esquema de mi documento solo tiene dos campos, _id y name
[{"_id":70672,"name":"SOME VALUE 1"},{"_id":71327,"name":"SOME VALUE 2"}]
¿¿¿Por qué???
javascript
node.js
mongodb
mongoose
TlonXP
fuente
fuente

.selectsolo es un filtro para elegir el campo después de obtener todo eso, mi recomendación es usar.find({}, 'name -_id').find({}, 'name -_id')parece no funcionar?Hay una forma más corta de hacer esto ahora:
En caso de que desee la mayoría de los
Schema fieldsy desee omitir solo algunos, puede prefijar el camponamecon un-. Por ejemplo,"-name"en el segundo argumento no se incluirá elnamecampo en el documento, mientras que el ejemplo que se da aquí solo tendrá elnamecampo en los documentos devueltos.fuente
blogItemModel.find({}, 'title intro_image intro_text publish_date', function(err, blog_items){..Hay una mejor manera de manejarlo usando el código nativo de MongoDB en Mongoose.
http://docs.mongodb.org/manual/reference/method/db.collection.find/
Nota:
La lista de objetos enumerados aquí no se devolverá / imprimirá.
fuente
Datos DB
Consulta
Salida:
Zona de juegos de muestra de trabajo
enlace
fuente
Excluir
El siguiente código recuperará todos los campos que no sean la contraseña dentro de cada documento:
Salida
Incluir
El siguiente código solo recuperará el campo de correo electrónico dentro de cada documento:
Salida
fuente
La forma precisa de hacer esto es usar el
.project()método del cursor con el nuevo controladormongodbynodejs.fuente
.project()funciona solo con agregado. Si desea usarlo con buscar, use el segundo argumento en elfind({},{ name: 1, _id: 0 })método.Por ejemplo,
0 significa ignorar
1 significa mostrar
fuente