Mongodb -如何为JSON字段创建全文索引?

2uluyalo  于 2022-11-28  发布在  Go
关注(0)|答案(1)|浏览(144)

这个问题是关于为mongo数据库集合创建全文索引的。
该系列包含以下文档:

{
    "_id" : ObjectId("5b44cd9dec97d60001efb75d"),
    "action_id" : NumberLong(0),
    "transaction_id" : "ad77575a8b4f52e477682e712b1cbd884299468db6a94d909f90c6961cea9b02",
    "authorization" : [
            {
                    "permission" : "active",
                    "actor" : "eosio"
            }
    ],
    "handler_account_name" : "eosio.token",
    "name" : "transfer",
    "data" : {
            "from" : "eosio",
            "to" : "b1",
            "quantity" : "10.0000 EOS",
            "memo" : "Never doubt that a small group of thoughtful, committed citizens can change the world; indeed, it's the only thing that ever has - eosacknowledgments.io"
    },
    "createdAt" : ISODate("2018-07-10T15:15:41.750Z")}

我正在尝试为“data”字段中的字符串字段创建文本索引。

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

但是根据mongo文档https://docs.mongodb.com/manual/core/index-text/,这将在整个文档的所有文本字段上创建索引,这是一种浪费。
我是否可以实现相同的索引行为,但仅限于“data”下的文本字段?

gajydyqb

gajydyqb1#

正如the official doc所说,
MongoDB提供了文本索引来支持对字符串内容的文本搜索查询。文本索引可以包括任何值为字符串或字符串元素数组的字段。
但是你没有字符串或字符串数组,而是一个json对象,实现你想要的方法是手动创建你的文本索引,包含你的数据子文档的每个字段:

db.Actions.createIndex(
  { 
  "data.from" : "text", 
  "data.memo" : "text", 
  "data.quantity" : "text", 
  "data.to" : "text"
  }
)

相关问题