3

我的目标是使用来自 Node.js 的 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 为空。我可以很好地执行 products.find() 之类的普通函数...并且可以在 MongoDB 命令行上执行搜索。有人知道怎么做吗?

顺便说一句,这是回调中包含的文档:

{
    "queryDebugString": "||||||",
    "language": "english",
    "results": [],
    "stats": {
        "nscanned": 0,
        "nscannedObjects": 0,
        "n": 0,
        "nfound": 0,
        "timeMicros": 55
    },
    "ok": 1
}

顺便说一句,如果有另一种方法可以只使用普通的本机驱动程序,我可以接受。

4

2 回答 2

6

使用本机驱动程序,我可以从 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
        });
    }
});

我注意到您正在从集合对象运行命令,这可能是问题所在。

于 2013-08-27T06:37:03.907 回答
-1

你需要在 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);
            }
            }
        );

        }
});
于 2019-04-09T19:58:41.950 回答