2014-01-30 86 views
11

我有一个在MongoDB中的以下形式的集合。 正如你可以看到一些documends有两个成员“id”和“XID”有的(从Object _id除外)只有1个“ID”MongoDB mongoexport查询

[ 
    { 
     "id" : 1, 
    }, 

    { 
     "id" : 2, 
    }, 

    { 
     "id" : 3 
     "xid": 300 
    } 
] 

我想创建一个mongoexport声明,出口到CSV只有ID和XID与XID的有价证券> 0

目前,我有以下命令:

mongoexport -h host -u user -p pass --db database --collection collections --csv --fields id,xid --query '{"xid":{"$ne":0}}' --out rec.csv 

然而,这还出口有一个ID文件没有XID。所以我得到像

xid, id 
12, 3 
,4 
14, 5 
,3 
,2 
12, 5 

有没有出口,只有同时拥有ID和XID文件的方法吗?

+0

- 查询“{'xid':{'$ ne':0}}”外部双引号和单引号内 http://stackoverflow.com/questions/21456714/mongoexport-error-parsing-query –

回答

6

您可以使用下面的查询:

{ $and: [ 
    {xid: {$exists:true}}, 
    {xid:{$gt:0}} 
    ] 
} 

$and“执行两个或多个表达式(例如,等的阵列中的逻辑与操作)并选择满足数组中所有表达式的文档。“

$exists检查文档中是否存在特定字段。另外,正如Vijay指出的那样,在你的描述中你提到你希望xid> 0。你不应该使用$ ne(不等于),而是$ gt(大于)。

0

从上面给出的文件看来它是一个文件的数组,但你没有访问文件。符号。似乎你错误地访问了文档。

应该是这样的'{"key.xid":{"$ne":0}}'

3

您可以将查询更改为

--query {id: {$exists : true}, xid: {$gt : 0}} 

这上面的查询将返回只有具有ID字段和具有XID的价值这些文件> 0。所以,如果有只具有id字段没有XID任何文件,这些文件将不会被退回。

7

您可以使用以下命令

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

mongoexport --db DB_NAME --collection COLLECTION_NAME --query “{ '名称': 'Vijil'}” --out file_name.json

+1

添加一些解释 –

+0

['Name':'Vijil','Id':121},{'Name':'Arul','Id':122},{'Name':'Abeesh','Id':123}] –

+0

这是你的收藏,如果你想在--out之前使用--query在终端上使用条件,写入查询导出集合 –