Jua*_*mpa 24 mongoose mongodb node.js
我需要使用mongoose插入一些数据,但是集合的名称是由用户在插入时提供的,所以我首先要检查集合是否存在.
我知道如何检查集合是否存在的方式是查询system.namespaces集合.我可以看到3种可行的方法.
system.namespaces使用mongoose 查询的方法(可能定义与db中的模式匹配的模式).数 3是最不优雅的,也是我想要避免的,我不想加载驱动程序的另一个实例,也不想在mongoose创建一个时创建新的连接.
1写完这篇文章之后我会尝试编号.我刚刚检查过system.namespaces,架构看起来很简单
我还是想听听一些意见.
谢谢!
Joh*_*yHK 34
选项2可能是最干净的.假设您有一个Connection名为conn已打开的Mongoose 对象mongoose.createConnection,您可以通过访问本机mongo Db对象conn.db.从那里你可以打电话给collectionNames哪个应该提供你想要的东西:
conn.db.collectionNames(function (err, names) {
// names contains an array of objects that contain the collection names
});
Run Code Online (Sandbox Code Playgroud)
您还可以将集合名称作为参数传递,collectionNames以将结果过滤到您正在查找的内容.
Mongoose 4.x更新
在Mongoose 4.x使用的2.x版本的MongoDB本机驱动程序中,collectionNames已被替换为listCollections接受过滤器并返回游标,因此您将执行以下操作:
mongoose.connection.db.listCollections({name: 'mycollectionname'})
.next(function(err, collinfo) {
if (collinfo) {
// The collection exists
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22721 次 |
| 最近记录: |