gpt4 book ai didi

Mongodb:如何索引多个嵌套文本字段?

转载 作者:可可西里 更新时间:2023-11-01 09:13:07 26 4
gpt4 key购买 nike

我的数据库中有以下类型的 json:

{ 
"_id" : "519817e508a16b447c00020e", "keyword" : "Just an example query",
"results" :
{
"1" : {"base_domain" : "example1.com", "href" : "http://www.example1.com/"},
"2" : { "base_domain" : "example2.com", "href" : "http://www.example2.com/"},
"3" : { "base_domain" : "example3.com", "href" : "http://www.example3.com/"},
"4" : { "base_domain" : "example4.com", "href" : "http://www.example4.com/"},
"5" : { "base_domain" : "example5.com", "href" : "http://www.example5.com/"},
"6" : { "base_domain" : "example6.com", "href" : "http://www.example6.com/"},
"7" : { "base_domain" : "example7.com", "href" : "http://www.example7.com/"},
"8" : { "base_domain" : "example8.com", "href" : "http://www.example8.com/"},
"9" : { "base_domain" : "example9.com", "href" : "http://www.example9.com/"},
"10" : { "base_domain" : "example10.com", "href" : "http://www.example10.com/"}
}
}

我的目标是获得以下查询的结果:

> db.ranking.find({ $text: { $search: "http://www.example9.com"}})

当我在所有文本字段上创建索引时它会起作用

> db.ranking.ensureIndex({ "$**": "text" }))

但当我仅在“结果”字段上创建索引时则不然:

> db.ranking.ensureIndex( {"results" : "text"} )

为什么?

最佳答案

问题是“结果”不是一个字段,它是一个子文档。为 MongoDB 在文本字段上创建索引的语法需要所有字段的符号“$*”(您正在正确使用),或者所有文本字段的列表:

Create a text Index

You can create a text index on the field or fields whose value is a string or an array of string elements. When creating a text index on multiple fields, you can specify the individual fields or you can use wildcard specifier ($**).

http://docs.mongodb.org/manual/tutorial/create-text-index-on-multiple-fields/

在你的情况下看起来像:

db.ranking.ensureIndex(
{
"keyword": "text",
"results.1.href": "text",
"results.1.href": "text",
"results.2.href": "text",
"results.3.href": "text",
"results.4.href": "text",
"results.5.href": "text",
"results.6.href": "text",
"results.7.href": "text",
"results.8.href": "text",
"results.9.href": "text",
"results.10.href": "text"
}
)

关于Mongodb:如何索引多个嵌套文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com