Dans mon MongoDB, j'ai une collection d'étudiants avec 10 enregistrements ayant des champs name
et roll
. Un enregistrement de cette collection est:
{
"_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
"name" : "Swati",
"roll" : "80",
}
Je souhaite récupérer le champ roll
uniquement pour les 10 enregistrements de la collection comme nous le ferions dans la base de données traditionnelle en utilisant:
SELECT roll FROM student
J'ai parcouru de nombreux blogs mais tous aboutissent à une requête qui doit WHERE
contenir une clause, par exemple:
db.students.find({ "roll": { $gt: 70 })
La requête équivaut à:
SELECT * FROM student WHERE roll > 70
Mon exigence est de trouver une seule clé sans aucune condition. Alors, quelle est l'opération de requête pour cela.
mongodb
projection
Shipra Swati
la source
la source
Réponses:
À partir des documents MongoDB :
Dans cet exemple , des gens de Mongo, les documents retournés ne contiendront que les champs de
item
,qty
et_id
.Ainsi, vous devriez pouvoir émettre une déclaration telle que:
L'instruction ci-dessus sélectionnera tous les documents de la collection des étudiants et le document retourné renverra uniquement le
roll
champ (et exclura le_id
).Si nous ne mentionnons pas
_id:0
les champs retournés serontroll
et_id
. Le champ '_id' est toujours affiché par défaut. Nous devons donc mentionner explicitement_id:0
avecroll
.la source
0
pour 9 d'entre eux? Edit: Nevermind, excluant_id
ie{field_I_want:1, _id:0}
semble fonctionnerWith the exception of the _id field, you cannot combine inclusion and exclusion statements in projection documents.
Cela pourrait être intéressant pour certains d'entre vous. ( source )obtenir toutes les données de la table
obtenir toutes les données de la table sans _id
obtenir toutes les données d'un champ avec _id
obtenir toutes les données d'un champ sans _id
rechercher les données spécifiées à l'aide de la clause where
rechercher une donnée en utilisant la clause where et une condition supérieure à
trouver une donnée en utilisant la clause where et une condition supérieure ou égale à
trouver une donnée en utilisant la clause where et inférieure ou égale à la condition
trouver une donnée en utilisant la clause where et moins que conditionner
la source
db.student.find({}, {_id:0})
Merci pour l'aide.Je pense que mattingly890 a la bonne réponse, voici un autre exemple avec le motif / commande
db.collection.find( {}, {your_key:1, _id:0})
la source
Voilà, 3 façons de faire, du plus court au plus ennuyeux:
Pour supprimer un
-
opérateur d' utilisation de champ spécifique :la source
À des fins éducatives, vous pouvez également le faire de l'une des manières suivantes:
1.
2.
"
la source
Essayez la requête suivante:
J'espère que cela t'aides!!
la source
Dans votre exemple, vous pouvez faire quelque chose comme:
Projection
REMARQUE
LIRE LA SUITE
la source
Bien que la réponse de gowtham soit complète, il convient de noter que ces commandes peuvent différer d'une API à l'autre (pour celles qui n'utilisent pas le shell de mongo).
Veuillez vous référer au lien de documentation pour des informations détaillées.
Les nœuds , par exemple, ont une méthode appelée `projection que vous ajouteriez à votre fonction find pour projeter.
En suivant le même exemple, des commandes comme les suivantes peuvent être utilisées avec Node:
db.student.find({}).project({roll:1})
Ou
db.student.find({}).project({roll:1, _id: 0})
etc.
Encore une fois pour les utilisateurs de nodejs, n'oubliez pas (ce que vous devriez déjà savoir si vous avez utilisé cette API auparavant) à utiliser
toArray
pour ajouter votre.then
commande.la source
Pour une meilleure compréhension, j'ai écrit une requête MySQL similaire.
la source
Cela fonctionne pour moi,
aucune condition dans la clause where, c'est-à-dire à l'intérieur des premières accolades. à l'intérieur des accolades suivantes: liste des noms de champs de projection nécessaires dans le résultat et 1 indique qu'un champ particulier fait partie du résultat de la requête
la source
la source
La requête pour MongoDB ici frais est la collecte et la description est un champ.
la source
Si vous souhaitez récupérer le champ "roll" uniquement pour les 10 enregistrements des collections. Alors essayez ceci.
Dans MongoDb:
En sql:
la source
Je veux juste ajouter aux réponses que si vous souhaitez afficher un champ imbriqué dans un autre objet, vous pouvez utiliser la syntaxe suivante
db.collection.find( {}, {{'object.key': true}})
Ici la clé est présente à l'intérieur de l'objet nommé objet
la source
Cela équivaut à -
db.student.find ({}, {"roll": 1, "name": 1, "_id": 0})
Cela équivaut à -
la source
Utilisez la requête comme ceci dans le shell:
1. Utilisez
database_name
2. Qui ne retourne que les informations spécifiques aux champs des actifs lorsqu'ils sont mis en correspondance,
_id:0
spécifie de ne pas afficher l'ID dans le résultatla source
Dans mongodb 3.4, nous pouvons utiliser la logique ci-dessous, je ne suis pas sûr des versions précédentes
sélectionnez roll from student ==> db.student.find (! {}, {roll: 1})
la logique ci-dessus aide à définir certaines colonnes (si elles sont inférieures)
la source
En utilisant Studio 3T pour MongoDB, si je l'utilise
.find({}, { _id: 0, roll: true })
toujours retourner un tableau d'objets avec un vide_id
propriété .L'utilisation de JavaScript
map
m'a aidé à récupérer uniquement laroll
propriété souhaitée sous forme de tableau de chaînes:la source
Je ne suis pas sûr que cela réponde à la question, mais je pense que cela vaut la peine d'être mentionné ici. Il existe une autre façon de sélectionner un seul champ (et non plusieurs) en utilisant
db.collection_name.distinct();
par exemple,
db.student.distinct('roll',{});
Ou, 2e voie: Utilisation
db.collection_name.find().forEach();
(plusieurs champs peuvent être sélectionnés ici par concaténation)par exemple,
db.collection_name.find().forEach(function(c1){print(c1.roll);});
la source