我的目标是使用来自Node的MongoDB(2.4.4)文本命令。它在命令行中运行良好。基于此前的SO问题:Equivalent to mongo shell db.collection.runCommand() in Node.js,我尝试使用MongoJS(0.7.17),但无法实现。这是代码:
mongojs = require('mongojs');
var products = mongojs('localhost:27017/mydb').collection('products');
products.runCommand('text', {search: 'a'}, function (err, docs) {
...
});
docs返回undefined,err为null。我可以执行一些正常的函数,例如products.find(),我可以在MongoDB命令行上执行搜索。有谁知道怎么做?
BTW,这是回调中包含的文档:
{
"queryDebugString": "||||||",
"language": "english",
"results": [],
"stats": {
"nscanned": 0,
"nscannedObjects": 0,
"n": 0,
"nfound": 0,
"timeMicros": 55
},
"ok": 1
}
顺便说一句,如果还有另一种方法可以让普通本机驱动程序正常工作,我就可以了。
答案 0 :(得分:5)
使用本机驱动程序,我可以按如下方式从db对象运行命令:
var MongoClient = require("mongodb").MongoClient;
MongoClient.connect(database, function (err, db) {
if (!err) {
db.command({ distinct: "Messages", key: "session" }, function (err, result) {
//more code here
});
}
});
我注意到你正在运行收集对象的命令,这可能是问题所在。
答案 1 :(得分:0)
您需要在db对象而不是connect对象内部调用命令
MongoClient.connect(url, function (err, db) {
if (!err) {
var dbo = db.db();
dbo.command({ insert: "mycollection", documents: [{"test":1}]}, function
(err, result) {
if (err)
{
console.log(err);
}else
{
console.log("1 document inserted",result);
}
}
);
}
});