如何从 Mongoose 获取定义的索引
Posted
技术标签:
【中文标题】如何从 Mongoose 获取定义的索引【英文标题】:How to get the defined indexes from Mongoose 【发布时间】:2018-05-31 17:11:29 【问题描述】:我一直在尝试找出已经通过 MongoDB 手动创建的索引(我通过 mongobooster 为两个字段创建了 2d 球体索引,并通过定义它通过模式创建了一个)。现在如果我在 mongodbooster 中运行这个查询
db.collectionname.getIndexes();
它为我生成了 3 个带有 name.key 的文档以及我使用了哪些索引。我想在猫鼬中执行相同的操作,但找不到相同的等效查询。我试过这个
const indexes = OrderSchema.indexes();
console.log('index:', indexes);
但它只给了我一个我在模式中定义的索引 _id 我还需要另外两个包含二维球体索引的字段我怎么能得到它。在这里想要实现的是,如果已经创建了 2d 球体索引,则不要创建索引,否则创建一个所有试图在这里实现的索引。任何帮助表示感谢谢谢
【问题讨论】:
查看此链接mongoosejs.com/docs/3.1.x/docs/… 【参考方案1】:如果您无权访问 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.forEach(function (index)
console.log(JSON.stringify(index));
);
;
【讨论】:
【参考方案2】:是的,你不能用架构来做到这一点。您需要先创建模型,然后您可以执行以下操作:
Order.collection.getIndexes(full: true).then(indexes =>
console.log("indexes:", indexes);
// ...
).catch(console.error);
【讨论】:
以上是关于如何从 Mongoose 获取定义的索引的主要内容,如果未能解决你的问题,请参考以下文章
Mongo (+Mongoose) 错误:无法找到 $geoNear 查询的索引
在 Mongoose 中使用“Ref”获取 mongo 数据时出现问题