Запрос 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