我正在获取$ text查询所需的文本索引,就像我在使用该架构之前已经做过索引一样。有人可以告诉我这可能是什么问题吗?还有一个问题,我们需要在mongodb中删除表以创建索引吗?如果是的话,我将失去当前数据。如何在不删除表的情况下建立索引?
const mongoose = require('mongoose');
let UserSchema = new mongoose.Schema({
email: String,
title: String,
});
UserSchema.indexes({ email: 'text', title: 'text' });
run().catch((err) => console.log(err));
async function run() {
await mongoose.connect('mongodb://localhost:27017/test', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
await mongoose.connection.dropDatabase();
const UserModel = mongoose.model('user', UserSchema);
await UserModel.createIndexes();
const newUser = [
{ email: 'test@test.com', title: 'r' },
{ email: 't@gmail.com', title: '@ro' },
];
const user = await UserModel.create(newUser);
console.log(user, 'user');
const index = await UserModel.listIndexes();
console.log(index);
const data = await UserModel.find({ $text: { $search: 'test' } }).exec();
console.log(data);
}
答案 0 :(得分:2)
函数UserSchema.indexes
返回在架构上定义的当前索引。您想要UserSchema.index
定义一个新索引。