如何通过MongoDB shell查看转换后的查询

时间:2011-10-06 16:48:25

标签: mongodb

> 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" }
> 

以下查询:

  

var cursor = db.foo.find({foo:“bar”})。sort({x:1})

shell已将

转换为以下语句:

  

db.foo.find({$ query:{foo:“bar”},$ orderby:{x:1}})

问题:有没有办法可以看到shell转换后的查询? 换句话说,给定一个查询,我可以通过shell看到转换后的查询形式吗?

1 个答案:

答案 0 :(得分:1)

您无法从shell中看到确切的查询,但您可以确切地看到帮助程序的功能(sortsize等)。离开parens将输出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运算符。