web-dev-qa-db-fra.com

Requête MongoDB mongoexport

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?

14
ChrisGeo

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 à).

7
Jinxcat

vous pouvez utiliser les commandes ci-dessous

mongoexport -d database_name -c collection_name --csv --query { id:{$exist:true},xid:{$gt:0}}
11
Darshan J

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.

4
Vicky

mongoexport --db_nom_base --collection nom_collection --query "{'Nom': 'Vijil'}" --out nom_fichier.json

3
vijin selvaraj

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}}'

1
arunb2w

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
0
Sudhanshu Gaur