Вы можете use the $in with regular expression путем создания нового массива RegExp объектов для использования с выражением $in
следующим образом:
var checkarray = ['ll','gg','ll','ss'],
regex = checkarray.map(function (k) { return new RegExp(k); });
db.collection.find({
"word": { "$in": regex }
})
Имейте в виду, что использование $in
может быть довольно эффективным с небольшими массивами но не так хорошо с огромными списками, поскольку он будет пропускать в индексе, чтобы найти соответствующие документы, или пройти через всю коллекцию, если нет индекса для использования.
Кроме using the $in with the regular expression, Вы можете использовать $regex
оператора а с трубкой разделителем шаблон регулярного выражения, содержащего checkarray так:
var checkarray = ['ll','gg','ll','ss'],
regex = checkarray.join("|");
db.collection.find({
"word": {
"$regex": regex,
"$options": "i"
}
})
Для согласования двух последних символов, используйте следующий шаблон , т.е. добавить $
к шаблону, где метасимвол $
обозначает конец строки. Например, шаблон abc$
может соответствовать следующим abc, endsinabc, 123abc, ...
.
Таким образом, для последующего вопроса
Мне нужны слова, которая оканчивающиеся букв checkArray, а не в середине или начиная. Символы CheckArray должны быть в конце буквы строки. как «ЯЙЦО» не «наполняться»
вы можете идти об этом так:
var checkarray = ['ll','gg','ff','ss'],
regex = checkarray.map(function (k) { return new RegExp(k+'$'); });
db.collection.find({
"word": { "$in": regex }
})
Чтобы проверить это, заполнить эти образцы документов для проверки коллекции:
db.test.insert([
{ "_id": 1, "word" : "well" },
{ "_id": 2, "word" : "filled" },
{ "_id": 3, "word" : "glass" },
{ "_id": 4, "word" : "blessed" }
])
выше запрос вернет документы с _id
с 1 и 3.
{ "_id" : 1, "word" : "well" }
{ "_id" : 3, "word" : "glass" }
Потрясающие. Хорошо работать Спасибо за ваш быстрый ответ. небольшой изменение. Мне нужны слова, которые заканчиваются буквами checkArray в середине или начинаются. Символы CheckArray должны заканчиваться буквой строки. как «EGG», а не «ЗАПОЛНЕН», ища помощи[email protected] –
@ user1099855 Я обновил свой ответ с решением для этого требования. – chridam
Отлично, отлично работает –