相关疑难解决方法(0)

具有多个字段的mongodb文本搜索

我正在尝试使用多个字段进行mongodb全文搜索.我已经在3个字段设置了索引 - 名称,描述,类别,并通过验证

document.collection.getIndexes (),返回 -

[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "document.collection"
    },
    {
        "v" : 1,
        "key" : {
            "name" : 2,
            "description" : 1,
            "category" : 1
        },
        "name" : "name_2_description_1_category_1",
        "ns" : "document.collection",
        "background" : true,
        "safe" : null
    }
]
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试执行文本搜索,请使用以下命令 -

db.collection.find(  {$text:{$search:'alias'}}  ).limit(10)
Run Code Online (Sandbox Code Playgroud)

收到以下错误消息:

error: {
    "$err" : "Unable to execute query: error processing query: ns=document.collection limit=10 skip=0\nTree: TEXT : query=alias, …
Run Code Online (Sandbox Code Playgroud)

mongodb

12
推荐指数
1
解决办法
2万
查看次数

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 ×2

sorting ×1