2013-08-27 90 views
1

我的目標是使用來自Node的MongoDB(2.4.4)文本命令。它從命令行工作正常。根據以前的SO問題:Equivalent to mongo shell db.collection.runCommand() in Node.js,我嘗試使用MongoJS(0.7.17),但無法實現。以下是代碼:MongoDB和MongoJS - 無法獲取runCommand以用於文本查詢

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 
} 

順便說一句,如果有另一種方法,使這項工作只用正常的本地驅動程序,我很好這一點。

回答

3

使用本地驅動程序,我可以關閉數據庫對象的運行命令如下:

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

我注意到你正在運行的命令關閉集合對象,這可能是問題。

+0

是的,雖然mongojs文檔說應該工作。我剛剛結束了你提出的一個變種......從數據庫中取而代之。謝謝。它看起來像: db.command({text:'products',搜索:'mysearchterm'},function(e,o){}); – michael

+0

有人可以解釋使用查找和使用db.command之間的區別嗎?爲什麼我不能在find中使用文本索引。這會不會符合這個習慣? – light24bulbs