有没有办法防止MongoDB在集合名称中添加复数形式?

有没有办法防止MongoDB在集合名称中添加复数形式?,mongodb,mongoose,Mongodb,Mongoose,例如,在我想创建一个名为“Mice”的集合之前,一切都很好。老鼠和老鼠都是不可接受的。如果在配置中有一个选项可以设置,那就好了。 评论:谢谢你的建议,我用的是猫鼬 如果您将模型命名为“鼠标”,Mongoose实际上会将集合名称正确地复数为“鼠标”(请参阅) 但您也可以在创建模型时通过将集合作为第三个参数传递给以下对象来显式命名集合: var-mices=mongoose.model('mices',MouseSchema,'mices'); mongoose.model的API结构如下: Mon

例如,在我想创建一个名为“Mice”的集合之前,一切都很好。老鼠和老鼠都是不可接受的。如果在配置中有一个选项可以设置,那就好了。
评论:谢谢你的建议,我用的是猫鼬

如果您将模型命名为“鼠标”,Mongoose实际上会将集合名称正确地复数为“鼠标”(请参阅)

但您也可以在创建模型时通过将集合作为第三个参数传递给以下对象来显式命名集合:

var-mices=mongoose.model('mices',MouseSchema,'mices');

mongoose.model的API结构如下: Mongoose#模型(名称、[schema]、[collection]、[skipInit])

mongoose所做的是,当没有传递集合参数时,mongoose通过将模型名称复数化来生成集合名称。如果不喜欢此行为,请传递集合名称或设置schemas集合名称选项

范例

var schema=newschema({name:String},{collection:'actor'})

//或

set('collection','actor')

//或

var collectionName='actor' var M=mongoose.model('Actor',schema,collectionName)

有关更多信息,请查看此链接:

以下是代码,您可以了解猫鼬是如何产生多种形式的

function pluralize(str) {
  var found;
  str = str.toLowerCase();
  if (!~uncountables.indexOf(str)) {
    found = rules.filter(function(rule) {
      return str.match(rule[0]);
    });
    if (found[0]) {
      return str.replace(found[0][0], found[0][1]);
    }
  }
  return str;
}

参考链接:

你是什么意思?MongoDB在哪里做这件事?我从来都不知道这个功能,你可以指定你正在使用的ODM,因为它是添加复数名称的功能。通常会有一种方法来解决这个问题。可能是它的wierd的复制品,但正确。