Запрос MongoDB mongoexport

У меня есть коллекция следующего вида в MongoDB. Поскольку вы можете видеть, что в некоторых документах есть два члена: "id" и "xid", а некоторые имеют только 1 "id" (кроме Object _id)

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

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

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

и др.

Есть ли способ экспортировать документы, в которых есть только id и xid?

Ответ 1

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

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

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

$exists проверяет, присутствует ли конкретное поле в документе.

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

mongoexport --db db_name --collection collection_name --query "{'Name': 'Vijil'}" --out имя_файла .json