如何从Mongoose中获取已定义的索引

qltillow  于 2023-10-19  发布在  Go
关注(0)|答案(2)|浏览(110)

我一直在尝试找出已经通过MongoDB手动创建的索引(我已经通过mongobooster为两个字段创建了2D球体索引,并通过定义模式创建了一个)。现在如果我在mongodbooster中运行这个查询

db.collectionname.getIndexes();

它的结果是我的3个文件与名称。关键和索引,我已经使用。我想在mongoose中执行相同的操作,但找不到等效的查询。我尝试了这个

const indexes = OrderSchema.indexes();
console.log('index:', indexes);

但是它只给了我一个索引,我在schema中定义了_id,我还需要另外两个包含2d球体索引的字段,我怎么才能得到呢?我想在这里实现的是,如果二维球体索引已经创建,不要创建索引,否则创建一个索引,这就是我想在这里实现的。任何帮助是赞赏谢谢

fnx2tebb

fnx2tebb1#

是的,你不能用一个模式来做。你需要先创建模型,然后你可以这样做:

Order.collection.getIndexes({full: true}).then(indexes => {
    console.log("indexes:", indexes);
    // ...
}).catch(console.error);
8aqjt8rx

8aqjt8rx2#

如果你没有访问mongoose模型,但mongoose连接已经创建,你需要从一个集合中获取索引,你可以通过这种方式访问:

const mongoose = require('mongoose');
mongoose.connect('myConnectionString', { useNewUrlParser: true }).then(() => {
    getIndexes();
}); 

const getIndexes = async () => {
    const indexes = await mongoose.connection.db.collection('myCollection').indexes();
    indexes.forEach(function (index) {
        console.log(JSON.stringify(index));
    });
};

相关问题