我有一个像这样的数组
array(
'ts' : 123456789,
'nm' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
)
...
array(
'ts' : 122345678,
'nm' : 'Nulla lorem purus, pretium porttitor ultricies sit amet, rutrum sollicitudin risus.'
)
如何查找包含' amet '且在'nm'中不包含' ipsum '的元素? 如何查找包含' amet '和' ipsum '的元素?
答案 0 :(得分:2)
Mongo与LIKE
最接近的是正则表达式:
db.my_collection.find({nm: /amet/})
但我不认为你可以做你要求的事情,除非你能写一个捕获你的查询的包含和不包含部分的正则表达式。
也就是说,就像LIKE
一样,Mongo的正则表达式查询不具备性能。如果您需要全文搜索,您应该查看像Solr或内置全文索引的数据库。
答案 1 :(得分:2)
我的解决方案
array(
'nm' => array(
'$all' => array(new MongoRegex('/amet/'), ...),
'$nin' => array(new MongoRegex('/ipsum/'), ...)
)
)