对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

对所有字段创建通配符索引

您可以创建通配符索引,以支持对所有可能的文档字段进行查询。 通配符索引支持对任意或未知字段名称进行查询。

要在所有字段(不包括_id )上创建通配符索引,请使用通配符说明符 ( $** ) 作为索引键:

db.<collection>.createIndex( { "$**": <sortOrder> } )

仅当需要索引的字段未知或可能更改时,才使用通配符索引。通配符索引的性能不及针对特定字段的目标索引。如果集合包含阻止目标索引建立的任意字段名称,则应考虑重新构建模式以获得一致的字段名称。要了解有关目标索引的更多信息,请参阅创建索引以支持您的查询

创建包含以下文档的artworkcollection:

db.artwork.insertMany( [
{
"name": "The Scream",
"artist": "Edvard Munch",
"style": "modern",
"themes": [ "humanity", "horror" ]
},
{
"name": "Acrobats",
"artist": {
"name": "Raoul Dufy",
"nationality": "French",
"yearBorn": 1877
},
"originalTitle": "Les acrobates",
"dimensions": [ 65, 49 ]
},
{
"name": "The Thinker",
"type": "sculpture",
"materials": [ "bronze" ],
"year": 1904
}
] )

每个文档都包含有关艺术品的详细信息。 字段名称因文档而异,具体取决于作品的可用信息。

以下操作在artworkcollection(不包括_id )中的所有文档字段上创建通配符索引:

db.artwork.createIndex( { "$**" : 1 } )

该索引支持对collection中任意字段进行单字段查询。如果文档包含嵌入式文档或数组,则通配符索引会遍历文档或数组,并将所有字段的值存储在文档或数组中。

例如,该索引支持以下查询:

  • query:

    db.artwork.find( { "style": "modern" } )

    输出:

    [
    {
    _id: ObjectId("6352c401b1fac2ee2e957f09"),
    name: 'The Scream',
    artist: 'Edvard Munch',
    style: 'modern',
    themes: [ 'humanity', 'horror' ]
    }
    ]
  • query:

    db.artwork.find( { "artist.nationality": "French" } )

    输出:

    [
    {
    _id: ObjectId("6352c525b1fac2ee2e957f0d"),
    name: 'Acrobats',
    artist: { name: 'Raoul Dufy', nationality: 'French', yearBorn: 1877 },
    originalTitle: 'Les acrobates',
    dimensions: [ 65, 49 ]
    }
    ]
  • query:

    db.artwork.find( { "materials": "bronze" } )

    输出:

    [
    {
    _id: ObjectId("6352c387b1fac2ee2e957f08"),
    name: 'The Thinker',
    type: 'sculpture',
    materials: [ 'bronze' ],
    year: 1904
    }
    ]

要了解如何创建投影特定字段以覆盖的通配符索引,请参阅以下页面:

要了解有关通配符索引行为的更多信息,请参阅: