小编Jul*_*ara的帖子

MongoDB:如何进行文本搜索并按日期排序

上下文:我有一个填充了大量电子邮件的MongoDB.我想在以下任何字段中搜索包含给定电子邮件地址的所有电子邮件:收件人,收件人,CC和BCC.结果需要按字段Date排序.我们目前正在尝试以下查询:

db.collection.find({ $text : {$search: "\"email@domain.com\""}}).sort({Date:1})
Run Code Online (Sandbox Code Playgroud)

我已经尝试过复合索引,包括日期,但它不起作用.

有了这个指数......

db.collection.createIndex({Date: 1, From:"text", To:"text", CC:"text", BCC:"text"})
Run Code Online (Sandbox Code Playgroud)

它给出了错误17007,因为Date应该具有相等匹配,因为它是一个前缀.这不是一个选项,因为我们喜欢所有电子邮件,无论日期如何.

还有这个其他指数......

db.collection.createIndex({From:"text", To:"text", CC:"text", BCC:"text", Date:1})
Run Code Online (Sandbox Code Playgroud)

然后,当它超过排序的内部限制时,它会给出错误17144.

我们已经阅读了以下内容:

Stackoverflow参考

Stackoverflow参考

关于复合索引的mongoDB文档

在这些参考文献和其他参考文献中,我认为这是不可能的,但我不认为我们想要做的是非典型或开箱即用.

我们做错了吗?有没有办法用复合索引或任何其他MongoDB功能进行此查询?

谢谢!

sorting mongodb

1
推荐指数
1
解决办法
2204
查看次数

标签 统计

mongodb ×1

sorting ×1