Guardé una matriz en mi objeto de usuario que contiene todos los datos
{ _id: ObjectId(#############) fname: 'Bob', lname: 'Vargas', data: [ // the data I want ] }Estoy usando express para obtener sus datos de esta manera:
db.users.findOne( { _id: ObjectId(#############) }, { data: 1, _id: 0 } );pero eso me está dando un objeto en lugar de la matriz:
{ data: [ /* my data */ ]}¿Cómo puedo obtener solo la matriz?
ACTUALIZAR
app.get('/user/:id/data', function (req, res, next) { db.users.findOne( { _id: mongojs.ObjectId(req.params.id) }, { data: 1, _id: 0 }, function (err, userData) { if (err) { res.send(err); } res.json(userData); } ); });Agregar proyección al resultado de la consulta:
db.users.findOne( { _id: ObjectId(#############) }, {_id:0, data:1} ) Utilice 0 para excluir el campo del resultado ( _id se incluye de forma predeterminada) y 1 para incluir el campo en el resultado.
MongoDB devuelve objeto por documento. Pero puede mapear objetos manualmente en el lado del cliente:
db.users.findOne( { _id: ObjectId(#############) }, {_id:0, data:1} ) .map(function(d){ return d.data; }))findOne() de MongoDB solo devolverá un objeto, no una matriz; así el One . En su lugar, deberá recibirlo como un objeto y luego obtener el valor.
Si está haciendo esto desde Mongo Shell, entonces no hay forma de evitarlo a menos que desee mover los datos a su propia colección. De lo contrario, puede obtener la matriz del objeto en su aplicación.
ACTUALIZAR:
en su respuesta expresa, solo codifique el valor de los datos, así
res.json(userData.data);