我连接到数据库并接收客户端。 下一步是创建一个集合(表)。
db.createCollection("test", function(err, collection){ //I also tried db.collection(...
if(collection!=null)
{
collection.insert({"test":"value"}, function(error, model){console.log(model)});
}
else if(err!=null)
console.log(err);
});
现在我将创建一个集合“test”以及其中的文档(行)“test”。
接下来是获取集合的内容:
db.test.find({}); //An empty query document ({}) selects all documents in the collection
这里我收到错误:无法调用 undefined 的“find”。那么,我做错了什么?
编辑:我以这种方式连接到数据库:
var mongoClient = new MongoClient(new Server("localhost", 27017, {native_parser:true}));
mongoClient.open(function(err,mongoclient){
if(mongoclient!=null)
{
var db = mongoclient.db("box_tests");
startServer(db);
}
else if(err!=null)
console.log(err);
});
最佳答案
在 mongo 命令行中,您可以使用db.test.find({})
,但在 javascript 中,到目前为止还没有办法复制该接口(interface)(也许有一天可以使用 Harmonies 代理)。
因此它会抛出错误无法调用未定义的“find”,因为数据库中没有测试。
mongodb的node.js驱动的api是这样的:
db.collection('test').find({}).toArray(function (err, docs) {
//you have all the docs here.
});
另一个完整的例子:
//this how you get a reference to the collection object:
var testColl = db.collection('test');
testColl.insert({ foo: 'bar' }, function (err, inserted) {
//the document is inserted at this point.
//Let's try to query
testColl.find({}).toArray(function (err, docs) {
//you have all the docs in the collection at this point
});
});
还要记住,mongodb 是无模式的,您不需要提前创建集合。很少有像创建上限集合这样的具体情况以及其他一些情况。
关于node.js - mongodb在nodejs集合中找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21698934/