2011-10-06 28 views
0
> db.foo.remove() 
> db.foo.insert({ foo : "bar" }) 
> var cursor = db.foo.find({ foo : "bar" }).sort({x : 1}) 
> cursor.hasNext() 
true 
> cursor.next() 
{ "_id" : ObjectId("4e8ddace03998dbf81966015"), "foo" : "bar" } 
> db.foo.find({ $query : {foo : "bar"}, $orderby : { x : 1}}) 
{ "_id" : ObjectId("4e8ddace03998dbf81966015"), "foo" : "bar" } 
> 

以下查詢:如何看到的MongoDB的轉換查詢殼

變種光標= db.foo.find({FOO: 「酒吧」})的.sort({X:1} )

已被轉換爲下面的語句由shell:

db.foo.find({$查詢:{FOO: 「酒吧」},$的OrderBy:{X:1} })

問:有沒有一種方法可以看到shell轉換後的查詢? 換句話說,給定一個查詢,我可以看到shell的查詢轉換後的形式嗎?

回答

1

您無法從shell中看到確切的查詢,但您可以準確瞭解輔助函數(sortsize等)的功能。離開關括號將輸出什麼JS查詢將執行:

> db.foo.find 
function (query, fields, limit, skip) { 
    return new DBQuery(this._mongo, this._db, this, this._fullName, this._massageObject(query), fields, limit, skip); 
} 
> db.foo.find().sort 
function (sortBy) { 
    return this._addSpecial("orderby", sortBy); 
} 

正如你可以看到,所有的sort確實是添加orderby操作。