Как написать urls.py в Django 1.9 и DRF 3.9.2

Я не большой поклонник использования оператора запроса $where из-за того, как он оценивает выражение запроса и риск безопасности, если запрос использует пользовательские входные данные.

Как сказано, лучший способ сделать это - $project ваш документ и добавить другое вычисленное поле, которое является строковым значением вашего номера.

Операторы $toLower и его sibling $toUpper соответственно преобразуют строку в строчную и прописную, но имеют немного неизвестную функцию, они могут использоваться для преобразования целого в строку.

Оператор $match возвращает все те документы, которые соответствуют вашему шаблону, с помощью оператора $regex .

db.seDemo.aggregate(
    [ 
        { "$project": { 
            "stringifyExample": { "$toLower": "$example" }, 
            "example": 1 
        }}, 
        { "$match": { "stringifyExample": /^123.*/ } }
    ]
)

, который дает:

{ 
    "_id" : ObjectId("579c668c1c52188b56a235b7"), 
    "example" : 1234,
    "stringifyExample" : "1234"
}

{ 
    "_id" : ObjectId("579c66971c52188b56a235b9"), 
    "example" : 12334,
    "stringifyExample" : "12334"
}

Теперь, если вы хотите получить весь документ, который содержит определенную подстроку, более простой и лучший способ сделать это в предстоящем выпуске MongoDB (начиная с этой записи) с использованием оператора $redact , который позволяет обрабатывать логическую $cond . $indexOfCP.

db.seDemo.aggregate([ 
    { "$redact": { 
        "$cond": [ 
            { "$gt": [ 
                { "$indexOfCP": [ 
                    { "$toLower": "$example" }, 
                    "123" 
                ] }, 
                -1 
            ] }, 
            "$$KEEP", 
            "$$PRUNE" 
        ] 
    }}
])

, который производит:

{ 
    "_id" : ObjectId("579c668c1c52188b56a235b7"), 
    "example" : 1234 
}

{ 
    "_id" : ObjectId("579c66971c52188b56a235b9"), 
    "example" : 12334 
}

0
задан Siddhant Singh 30 March 2019 в 21:52
поделиться