MongoDB和MongoJS - 无法使runCommand用于文本查询

时间:2013-08-27 00:43:29

标签: node.js mongodb mongojs

我的目标是使用来自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
}
顺便说一句,如果还有另一种方法可以让普通本机驱动程序正常工作,我就可以了。

2 个答案:

答案 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);
            }
            }
        );

        }
});