如何查看或修改在MongoDB集合上设置的排序规则选项?

And*_*sin 2 mongodb mongo-collection

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

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

db.createCollection("words", {collation : {locale :"es", strength : 2}});
Run Code Online (Sandbox Code Playgroud)

并添加一些文件:

db.words.insertOne({text : "Résumé"});
db.words.insertOne({text : "Resume"});
db.words.insertOne({text : "résumé"});
db.words.insertOne({text : "resume"});
Run Code Online (Sandbox Code Playgroud)

如何将此集合的归类的强度更改为3?我如何看待变化?我没有在db对象或db.words对象或文档中看到任何可用的相关功能!

Ste*_*nie 5

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

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

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

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

有几种方法。

所述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"
}
Run Code Online (Sandbox Code Playgroud)

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

> 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"
}
Run Code Online (Sandbox Code Playgroud)