#sql #regex #node.js #mongodb #sails.js
#sql #регулярное выражение #node.js #mongodb #sails.js
Вопрос:
Привет, у меня есть этот запрос в sails…
Model.find().where({ seachField : { contains:"search_key" }}).exec(cb);
Общее количество возвращаемых строк: 20
Когда я пытаюсь преобразовать его в node, вместо этого я использовал запрос
db.get().collection("model").find({ seachField : { '$regex' : ".*" searchKey ".*"}}).toArray()...
Общее количество возвращаемых строк: 10
Могу ли я узнать, какая функция «содержит» эквивалентна MongoDB, чтобы я мог получить такое же количество результатов?
Ценю вашу помощь!
Спасибо
Комментарии:
1. Ни одно из этих утверждений не должно быть действительным. Синтаксис должен быть ` «field»: { содержит: «search_key» }` или простой монго
"field": { "$regex": "search_key" }
, где «field» — это поле для поиска. Я бы также предположил, что проблема, возможно, связана сor
вместо.2. привет, Нил, спасибо за ваш комментарий. Ах да, я забыл поле поиска 🙂 спасибо за исправление… Оба они работают нормально, разница лишь в том, что результаты имеют разный подсчет. Я понял это несколько часов назад, я просто добавил { «$regex» : «.*» SearchKey «.*», «$options»:’i’ } для поиска без учета регистра 🙂
Ответ №1:
Его:
db.model.find({ seachField : new RegExp(searchKey)}).toArray()
Если вы знакомы с SQL, это очень полезно: http://docs.mongodb.org/manual/reference/sql-comparison /