Как исключить поле, содержащее текст, и вернуть как ноль, так и не существует? - PullRequest
0 голосов
/ 09 января 2019

Я использую Studio3T для запуска MongoDB, но я новичок. У меня есть поле publishing.notes, которое я использую для исключения элементов из отчета. Обычно это поле не используется, поэтому в большинстве документов НЕ заполнено это поле, и мы использовали этот код ниже для отчета. (публикация.notes - последняя строка)

{
$and: [
    {
        "warehouses.code": "RSDMAIN" 
    }
    ,
    {
        "warehouses.0.quantity": {
            $gt: NumberInt(0) 
        }
    }
    ,
    {
        "images.0.image": {
            $exists: false 
        }
    }
    ,
    {
        "featured_image.slug": {
            $exists: false 
        }
    }
    ,
    {
        "publication.status": {
            $ne: "discontinued" 
        }
    }
    ,
    {
        "publication.status": {
            $ne: "rejected" 
        }
    }
    ,
    {
        "product_type": {
            "$in":[
                "standard" ,
                null 
            ]
        }
    }
    ,
    {
        "publication_notes": {
            $exists: false 
        }
    }
]
}

Проблема в том, что у нас был небольшой процент документов, которые заполняются примечаниями к публикации, но он остается нулевым. Я хотел бы, чтобы в моем отчете содержались как нулевые, так и несуществующие документы, но при этом исключались бы документы с реальным текстом. Все, что я пробую, делает меня либо нулевым, либо DNE.

Я попытался поиграться с "publishing.notes": {$ not: {$ type: 2}}, но они возвращают тот же отчет, что и "publishing_notes": {$ exist: false}, что заставляет меня думать, что это видит все, что находится в поле, в виде строки, даже если оно пустое.

1 Ответ

0 голосов
/ 09 января 2019

Пожалуйста, попробуйте publication_notes : null, чтобы получить как ноль, так и не существует

коллекция образцов

> db.t44.find()
{ "_id" : ObjectId("5c3543fc01f1171d3864b924"), "a" : "asdaw" }
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }

найти результат

> db.t44.find({a : null})
{ "_id" : ObjectId("5c35440201f1171d3864b925"), "a" : null }
{ "_id" : ObjectId("5c35440601f1171d3864b926") }
>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...