mongodb - Mongodb聚合获取搜索结果的计数
问题描述
我为下面的数据字段设置索引,然后尝试获取特定文本搜索内容和所有文本内容的计数
我的输入如下:
{
_id: 14572
data: "selling bike in india"
}
{
_id: 14673
data: "sale bike in india"
}
{
_id: 14673
data: "buying cars in india"
}
我厌倦了从收集中获取汽车、自行车和总文件的数量,不幸的是没有得到它,
db.collection.aggregate([
{
"Total": [
{$match:{"$text":{$search:"india"}}},
{ "$count": "Total" },
],
"bike": [
{$match:{"$text":{$search:"bike"}}},
{ "$count": "bike" }
]
{ "$project": {
"Total": { "$arrayElemAt": ["$Total.Total", 0] },
"bike": { "$arrayElemAt": ["$bikebike.Birds", 0] }
}}
])
预期输出如下
Total:3
bike:2
car:1
解决方案
$text
操作员在https://docs.mongodb.com/manual/reference/operator/query/text/index.html中有一些限制
与此查询相关的一对:
一个查询最多可以指定一个 $text 表达式。
如果在聚合中使用 $text 运算符,则以下限制也适用。
包含 $text 的 $match 阶段必须是管道中的第一个阶段。
由于您尝试对不同的字符串进行单独的文本搜索,因此您需要分别进行每一个搜索,例如
db.collection.count({$text:{$search:"india"}})
db.collection.count({$text:{$search:"bike"}})
db.collection.count({$text:{$search:"car"}})
推荐阅读
- python - 难以让 google-coral example-object-detection 正常工作
- c# - 根据一个字符或另一个字符提取部分文本
- elasticsearch - Kibana:显示带有特定标签的日志
- java - 如何解决 org.apache.camel.FailedToCreateProducerException CaughtExceptionMessage: Failed to create Producer for endpoint?
- python - 有没有像 Django 的拱单元这样的库?
- java - Android Java Alarm Manager Pending Intent 无法删除
- nginx - Nginx 检查 Cloudflare 是转发还是直接 IP 并相应限制
- python - 在Python中的不同文件夹中的脚本和CSV时导入CSV
- mysql - 如何运行 Sequelize 迁移以使用导入函数的响应更新字段?
- json - BizTalk 2020 JSON 编码器生成对象的根数组,即以 [ ] 开头