MongoDB запрос mongoexport

У меня есть коллекция следующей формы в MongoDB. Как вы можете видеть, некоторые документы имеют два члена «id» и «xid», а некоторые имеют только 1 «id» (помимо Object _id)

[
    {
        "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?


person ChrisGeo    schedule 30.01.2014    source источник
comment
--query {'xid':{'$ne':0}} двойные кавычки снаружи и одинарные кавычки внутри заголовка stackoverflow.com/questions/21456714/   -  person Mohammed Ashiq    schedule 27.12.2016


Ответы (6)


В качестве запроса вы можете использовать следующее:

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

$and "выполняет логическую операцию И над массив из двух или более выражений (например, , и т. д.) и выбирает документы, которые удовлетворяют всем выражениям в массиве».

$exists проверяет наличие определенного поля в документ.

Кроме того, как указывает Виджей, в своем описании вы упоминаете, что хотите xid > 0. Вы должны использовать не $ne (не равно), а $gt (больше).

person Jinxcat    schedule 30.01.2014

вы можете использовать команды ниже

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

Вы можете изменить свой запрос на

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

Этот вышеприведенный запрос вернет только те документы, которые имеют поле id и имеют значение xid> 0. Таким образом, если есть какой-либо документ, в котором есть только поле id, а не xid, эти документы не будут возвращены.

person Vicky    schedule 30.01.2014

mongoexport --db db_name --collection collection_name --query "{'Name':'Vijil'}" --out file_name.json

person vijin selvaraj    schedule 10.01.2018
comment
добавить некоторые пояснения - person Yahya Hussein; 10.01.2018

Помните, что начиная с 3.0.6 тег --csv не поддерживается, теперь для его использования используйте --type=csv

Ниже приведен запрос, который использует MongoExport для базы данных db_name и коллекции collection_name. Не забудьте также указать имена полей (какие поля вы хотите добавить в свой 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
person Sudhanshu Gaur    schedule 16.10.2018

Из приведенного выше документа кажется, что это массив документов, но вы обращаетесь к документу без . обозначение. Похоже, вы неправильно обращаетесь к документу.

Должно быть что-то вроде '{"key.xid":{"$ne":0}}'

person arunb2w    schedule 30.01.2014