上下文:我有一个填充了大量电子邮件的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.
我们已经阅读了以下内容:
在这些参考文献和其他参考文献中,我认为这是不可能的,但我不认为我们想要做的是非典型或开箱即用.
我们做错了吗?有没有办法用复合索引或任何其他MongoDB功能进行此查询?
谢谢!