我需要使用mongoose插入一些数据,但是集合的名称是由用户在插入时提供的,所以我首先要检查集合是否存在.
我知道如何检查集合是否存在的方式是查询system.namespaces集合.我可以看到3种可行的方法.
system.namespaces使用mongoose 查询的方法(可能定义与db中的模式匹配的模式).数 3是最不优雅的,也是我想要避免的,我不想加载驱动程序的另一个实例,也不想在mongoose创建一个时创建新的连接.
1写完这篇文章之后我会尝试编号.我刚刚检查过system.namespaces,架构看起来很简单
我还是想听听一些意见.
谢谢!
我有一个函数,试图从MongoDB中的设置集合中获取特定值.设置集合中包含设置值的设置对象标记为{'settings':'settings'}.架构是:
collection:setting
|--object
|--{'settings':'settings'}
|--{'valueA':'valueA'}
|--...
Run Code Online (Sandbox Code Playgroud)
问题是当我第一次查询设置对象时,集合'settings'根本不存在.所以,
exports.getInstruments = function (callback) {
db.collection("settings", function(error, settings) {
settings.find({ "settings" : "settings" }), (function(err, doc) {
callback(doc.instruments);
});
]);
}
Run Code Online (Sandbox Code Playgroud)
只是挂起并且不调用回调.如果收集不存在,我应该返回""或未定义,否则 - doc.instrumens.