2014-01-30 4 views
11

У меня есть коллекция следующих форм в MongoDB. Как вы можете видеть, что некоторые documends двух членов «ID» и «XID», а некоторые имеют только 1 «идентификатор» (в сторону от _id объекта)MongoDB запрос mongoexport

[ 
    { 
     "id" : 1, 
    }, 

    { 
     "id" : 2, 
    }, 

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

Я хочу создать mongoexport о том, что экспорт в CSV только документы с идентификаторами и 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 

Однако это также экспортирует документы, которые имеют идентификатор без XID. Так что я получаю что-то вроде

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

т.д.

Есть ли способ экспортировать документы, которые имеют только как идентификатор и XID?

+0

- query "{'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}} 

Это выше запрос будет возвращать только те документы, которые имеют поле идентификатора и имеют значение XID> 0. Таким образом, если есть какой-либо документ, который есть только поле идентификатора не 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

это ваша коллекция, если вы хотите сбор экспорта с использованием условного запроса на запись в терминале с использованием --query before -out –

Смежные вопросы