4

您如何修改我们在创建集合时设置的选项?我们如何查看已经设置的选项?

例如,如果我们看到排序规则选项,我会创建一个这样的集合:

db.createCollection("words", {collation : {locale :"es", strength : 2}});

并添加一些文件:

db.words.insertOne({text : "Résumé"});
db.words.insertOne({text : "Resume"});
db.words.insertOne({text : "résumé"});
db.words.insertOne({text : "resume"});

如何将此集合的排序规则强度更改为 3?我如何看到变化?我在db对象或db.words对象或文档中看不到任何可用的相关功能!

4

2 回答 2

7

您如何修改我们在创建集合时设置的选项?

在 MongoDB 3.6 中,只能在创建集合时指定默认排序规则选项。不支持修改默认排序规则选项。

但是,如果您想使用默认值以外的排序规则选项,您可以为支持排序规则collation的操作指定一个文档,例如和。find()aggregate()

我们如何查看已经设置的选项?

有几种方法。

shell 助手显示额外的db.getCollectionInfos()集合信息,例如排序规则默认值:

db.getCollectionInfos({name:'words'})[0].options.collation
{
  "locale": "es",
  "caseLevel": false,
  "caseFirst": "off",
  "strength": 2,
  "numericOrdering": false,
  "alternate": "non-ignorable",
  "maxVariable": "punct",
  "normalization": false,
  "backwards": false,
  "version": "57.1"
}

您还可以检查查询计划器使用的默认排序规则选项:

> db.words.find().explain().queryPlanner.collation
{
  "locale": "es",
  "caseLevel": false,
  "caseFirst": "off",
  "strength": 2,
  "numericOrdering": false,
  "alternate": "non-ignorable",
  "maxVariable": "punct",
  "normalization": false,
  "backwards": false,
  "version": "57.1"
}
于 2018-02-17T11:01:48.060 回答
3

修改默认排序规则目前正在开发中:

https://jira.mongodb.org/browse/SERVER-35314

于 2019-01-02T09:37:49.177 回答