无法使用Mongoose在MongoDB本地上创建索引

mitkmikd  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(217)

我试图在MongoDB上创建自定义索引,但是当我通过命令行检查mongodb-compass时,它没有创建。
这是 Mongoose 模型

  1. import Mongoose from "mongoose";
  2. // import encrypt from "mongoose-encryption";
  3. import dotenv from "dotenv";
  4. import path from "path";
  5. const __dirname = path.resolve();
  6. dotenv.config({ path: __dirname + "/.env" });
  7. const signupSchema = new Mongoose.Schema(
  8. {
  9. name: { type: String, required: [true, "name required"] },
  10. email: {
  11. type: String,
  12. required: [true, "email required"],
  13. unique: true,
  14. index: true,
  15. },
  16. phoneNumber: {
  17. type: Number,
  18. required: [true, "phone number required"],
  19. unique: true,
  20. index: true,
  21. },
  22. currentLocation: {
  23. type: String,
  24. required: [false, "current location required"],
  25. },
  26. password: { type: String, required: [true, "password requred"] },
  27. createdDate:{
  28. type:Date,
  29. default:Date.now
  30. },
  31. },
  32. {
  33. timestamps: true,
  34. timeseries: true,
  35. }
  36. );
  37. // const secretkey = process.env.MY_SECRET_KEY;
  38. // signupSchema.plugin(encrypt, { secret: secretkey });
  39. signupSchema.index({email:1,type:1})
  40. const SignUpModel = Mongoose.model("SignUp", signupSchema);
  41. export default SignUpModel;

我的索引. js

  1. mongoose.connect(process.env.MONGODB_URL || 'mongodb://localhost/naukridb',{
  2. useNewUrlParser:true,
  3. useUnifiedTopology:true,
  4. })
  5. mongoose.pluralize(null)

查看未创建索引的指南针图像(即使在模型中定义):

这是我要检查的命令行:

没有对电子邮件和电话号码创建索引,唯一示例也不起作用。
久经考验:
Mongoose create multiple indexes
Mongoose not creating index
Mongoose Not Creating Indexes
Mongoose does not create text index
mongoose index don't create
Mongoose Secondary Index is not created
但是没有一个解决方案是有效的。我的MongoDB版本是5.0.10。

b91juud3

b91juud31#

看起来这是由于在架构上设置timeseries : true造成的。我不确定这是Mongoose问题、MongoDB问题还是预期行为。
您可以使用ensureIndexes来确保建立次要索引:

  1. const SignUpModel = Mongoose.model("SignUp", signupSchema);
  2. await SignUpModel.ensureIndexes();

相关问题