J'ai une collection de la forme suivante dans MongoDB . Comme vous pouvez le voir, certains documents ont deux membres "id" et "xid" et d'autres un seul "id" (à part Object _id)
[
{
"id" : 1,
},
{
"id" : 2,
},
{
"id" : 3
"xid": 300
}
]
Je souhaite créer une instruction mongoexport qui exporte vers un csv uniquement les documents avec les identifiants AND et xid avec la valeur xid> 0
J'ai actuellement la commande suivante:
mongoexport -h Host -u user -p pass --db database --collection collections --csv --fields id,xid --query '{"xid":{"$ne":0}}' --out rec.csv
Cependant, cela exporte également les documents qui ont un identifiant sans xid. Donc je reçois quelque chose comme
xid, id
12, 3
,4
14, 5
,3
,2
12, 5
etc.
Existe-t-il un moyen d’exporter des documents comportant à la fois id et xid?
Vous pouvez utiliser les éléments suivants comme requête:
{ $and: [
{xid: {$exists:true}},
{xid:{$gt:0}}
]
}
$ et "effectue une opération AND logique sur un tableau de deux expressions ou plus (par exemple, etc.) et sélectionne les documents qui satisfont toutes les expressions du tableau."
$ existe vérifie si le champ spécifique est présent dans le document.
En outre, comme l'a souligné Vijay, dans votre description, vous indiquez que vous voulez xid> 0. Vous ne devriez pas utiliser $ ne (pas égal), mais $ gt (supérieur à).
vous pouvez utiliser les commandes ci-dessous
mongoexport -d database_name -c collection_name --csv --query { id:{$exist:true},xid:{$gt:0}}
Vous pouvez changer votre requête en
--query {id: {$exists : true}, xid: {$gt : 0}}
Cette requête ci-dessus ne renvoie que les documents comportant un champ id et dont la valeur est xid> 0. Par conséquent, s'il existe un document dont le champ id est différent de xid, ces documents ne seront pas renvoyés.
mongoexport --db_nom_base --collection nom_collection --query "{'Nom': 'Vijil'}" --out nom_fichier.json
D'après le document donné ci-dessus, il semble qu'il s'agisse d'un tableau de documents, mais vous accédez au document sans. notation. Il semble que vous ayez mal accédé au document.
Devrait être quelque chose comme '{"key.xid":{"$ne":0}}'
Rappelez-vous qu'à partir de 3.0.6
--csv
, la balise n'est pas prise en charge, maintenant, vous pouvez utiliser cette --type=csv
Ci-dessous se trouve la requête qui prend MongoExport sur la base de données db_name
et la collection collection_name
. N'oubliez pas de spécifier également les noms de champs (les champs que vous souhaitez ajouter dans votre fichier csv).
Sudo mongoexport -d db_name -c collection_name --type=csv --query='{field1:{$gt:2}}' -f "field1,field2" --sort='{field1:-1}' -u 'username' -p 'passwd' --authenticationDatabase=admin --out dir/file.csv