En mi MongoDB, tengo una colección de estudiantes con 10 registros que tienen campos namey roll. Un registro de esta colección es:
{
"_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
"name" : "Swati",
"roll" : "80",
}
Quiero recuperar el campo rollsolo para los 10 registros de la colección como lo haríamos en la base de datos tradicional usando:
SELECT roll FROM student
Revisé muchos blogs, pero todos dan como resultado una consulta que debe tener una WHEREcláusula, por ejemplo:
db.students.find({ "roll": { $gt: 70 })
La consulta es equivalente a:
SELECT * FROM student WHERE roll > 70
Mi requisito es encontrar una sola clave solo sin ninguna condición. Entonces, ¿cuál es la operación de consulta para eso?
mongodb
projection
Shipra Swati
fuente
fuente

Respuestas:
De los documentos de MongoDB :
En este ejemplo de la gente en Mongo, los documentos devueltos contendrán sólo los campos de
item,qtyy_id.Por lo tanto, debe poder emitir una declaración como:
La declaración anterior seleccionará todos los documentos en la colección de estudiantes, y el documento devuelto devolverá solo el
rollcampo (y excluirá el_id).Si no mencionamos
_id:0los campos devueltos seránrolly_id. El campo '_id' siempre se muestra de forma predeterminada. Por lo tanto, debemos mencionar explícitamente_id:0junto conroll.fuente
0para 9 de ellos. Editar: No importa, excluyendo,_ides decir,{field_I_want:1, _id:0}parece funcionarWith the exception of the _id field, you cannot combine inclusion and exclusion statements in projection documents.Esto podría ser interesante para algunos de ustedes. ( fuente )obtener todos los datos de la tabla
obtener todos los datos de la tabla sin _id
obtener todos los datos de un campo con _id
obtener todos los datos de un campo sin _id
buscar datos especificados utilizando la cláusula where
buscar datos usando la cláusula where y mayor que la condición
buscar datos utilizando la cláusula where y una condición mayor o igual que
buscar datos utilizando la cláusula where y una condición menor o igual que
buscar datos utilizando la cláusula where y menos que condicionar
fuente
db.student.find({}, {_id:0})Gracias por la ayuda.Creo que mattingly890 tiene la respuesta correcta, aquí hay otro ejemplo junto con el patrón / comando
db.collection.find( {}, {your_key:1, _id:0})fuente
Aquí tienes, 3 formas de hacerlo, la más corta a la aburrida:
Para eliminar el campo específico, utilice el
-operador:fuente
Solo con fines educativos, también puede hacerlo con cualquiera de las siguientes formas:
1)
2)
``
fuente
Pruebe la siguiente consulta:
¡¡Espero que esto ayude!!
fuente
En su ejemplo, puede hacer algo como:
Proyección
NOTA
LEE MAS
fuente
Si bien la respuesta de gowtham está completa, vale la pena señalar que esos comandos pueden diferir de una API a otra (para aquellos que no usan el shell de mongo).
Consulte el enlace de documentación para obtener información detallada.
Los nodejs , por ejemplo, tienen un método llamado `proyección que agregaría a su función de búsqueda para proyectar.
Siguiendo el mismo conjunto de ejemplos, se pueden usar comandos como los siguientes con Node:
db.student.find({}).project({roll:1})O
db.student.find({}).project({roll:1, _id: 0})y así.
Una vez más, para los usuarios de nodejs, no olviden (con lo que ya deberían estar familiarizados si antes usaban esta API)
toArraypara agregar su.thencomando.fuente
Para una mejor comprensión, he escrito una consulta MySQL similar.
fuente
Esto funciona para mi
sin condición en la cláusula where, es decir, dentro de las primeras llaves. dentro de las próximas llaves: la lista de nombres de campos de proyección que se necesitarán en el resultado y 1 indica que un campo particular es la parte del resultado de la consulta
fuente
fuente
La consulta para las tarifas de MongoDB aquí es la recopilación y la descripción es un campo.
fuente
Si desea recuperar el campo "roll" solo para los 10 registros en las colecciones. Entonces prueba esto.
En MongoDb:
En SQL:
fuente
Solo quiero agregar a las respuestas que si desea mostrar un campo anidado en otro objeto, puede usar la siguiente sintaxis
db.collection.find( {}, {{'object.key': true}})Aquí la clave está presente dentro del objeto llamado objeto
fuente
Esto es equivalente a -
db.student.find ({}, {"roll": 1, "name": 1, "_id": 0})
Esto es equivalente a -
fuente
Use la consulta como esta en el shell:
1. Uso
database_name2. Que solo devuelve información de campo particular de los activos cuando coincide,
_id:0especifica que no se muestre ID en el resultadofuente
En mongodb 3.4 podemos usar la lógica a continuación, no estoy seguro acerca de las versiones anteriores
seleccione roll from student ==> db.student.find (! {}, {roll: 1})
la lógica anterior ayuda a definir algunas columnas (si son menos)
fuente
Usando Studio 3T para MongoDB, si lo uso
.find({}, { _id: 0, roll: true })aún devuelve una matriz de objetos con un vacío_idpropiedad .El uso de JavaScript
mapme ayudó a recuperar solo larollpropiedad deseada como una matriz de cadenas:fuente
No estoy seguro de que esto responda la pregunta, pero creo que vale la pena mencionarlo aquí. Hay una forma más de seleccionar un solo campo (y no múltiples) usando
db.collection_name.distinct();p.ej,
db.student.distinct('roll',{});O, segunda forma: usar
db.collection_name.find().forEach();(se pueden seleccionar varios campos aquí por concatenación)p.ej,
db.collection_name.find().forEach(function(c1){print(c1.roll);});fuente