Все аргументы запроса MongoDB уже являются условиями AND, поэтому просто включите их в один и тот же ключ:
db.getCollection('system_parameter').remove({
"variable": {
"$regex": /^pickup_kota/,
"$nin": [
/^pickup_kota_jakarta/
]
}
})
Или вы всегда можете написать «длинную форму» с помощью $and
db.getCollection('system_parameter').remove({
"$and": [
{ "variable": /^pickup_kota/ },
{ "variable": "$nin": [/^pickup_kota_jakarta/] }
]
})
Итак, с двумя такими документами:
{ "variable" : "pickup_kota_somewhere" }
{ "variable" : "pickup_kota_jakarta" }
Удаляется только первый
Но до тех пор, пока вы можете использовать другой оператор, такой как $regex
здесь, чтобы разделить условия на ключи, тогда вам не нужна полная форма.
Кроме того, поскольку оба они привязаны к началу строки, это более эффективно для MongoDBсделать два сравнения, чем пытаться использовать регулярное выражение для удовлетворения обоих возможных условий.Единственное регулярное выражение, которое могло бы нарушить это ограничивающее правило и снизить эффективность, полученную при поиске, привязанном к началу строки, которая может использовать индекс.