Mongodb使$text搜索可以使用空字符串作为$or的单个子句
Mongodb make $text search work with an empty string as the single clause of an $or
问题的标题总结了我目前尝试进行查询的方法,该方法试图实现以下目标:
"查找所有符合文本搜索条件或不符合的文档,并满足一系列其他属性"
我的查询如下:
var query = {
$or: [
{ $text: { $search: searchText } },
],
$and: [
{createdon: { $gte: start_date, $lt: end_date} },
{author: req.user._id}
]
};
如果用户发送了空字符串,则查询不会返回任何结果,尽管集合中有符合用户在AND子句中发送的请求中的条件的文档。
因此,基本上,我一直在绞尽脑汁,想知道如何让MongoDB的$text搜索使用一个空字符串。
我知道我可以在创建查询之前简单地发短信,就像这样:
var query;
if (!searchText.length) {
//We know there's no search text, so just use the conditions in the AND clause
query = {
createdon: { $gte: start_date, $lt: end_date},
author: req.user._id
};
只是想知道我是否可以获得所需的功能,而不必在条件的控制流中创建查询对象。
对于未来的读者:
我似乎无法解决这个问题,所以现在为了让它发挥作用,我已经使用了查询的条件声明,这很好。
//Get the search text from the request
var searchText = req.body.searchText || "";
var query = {
event_date: { $gte: start_date, $lt: end_date},
author: req.user.id
};
//Check if there is any search text before applying the $text query
if (searchText.length) {
query["$text"] = { $search: searchText }
}
如果没有发送任何内容,这将忽略文本搜索。
这就是答案,直到有人回答!
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 是否可以禁用jquery中的单个单选按钮
- 引导程序:在导航栏中,显示悬停在单个位置的基于Li Link的不同内容
- Angular 2.0 with JavaScript or TypeScript?
- 使用jquery选中/取消选中单个复选框
- 单个页面上有多个标记表单
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 用于多个类事件Jquery的单个函数
- SharePoint 2010 Jquery/JSON Rest Multiple OR语句-如何
- GWT (or javascript) library for couchDB
- 仅使用文件对象选择单个文件
- 如何使用单个表单填写多个表单
- 如何将html打包到单个应用程序中
- 更改图层中单个矢量特征的图标
- 在ES6中,模块将导致多个网络调用,因为两个模块不能在单个文件中定义
- Mongodb使$text搜索可以使用空字符串作为$or的单个子句
- 使用 limit 解析“or”查询将返回忽略单个查询限制的所有记录
- 过滤器使用"OR"为单个列提供多个过滤器逻辑通过网格外的复选框/按钮
- Javascript regex模式匹配多个字符串(AND, OR)对单个字符串