> 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" }
>
以下查询:
shell已将var cursor = db.foo.find({foo:“bar”})。sort({x:1})
转换为以下语句:
db.foo.find({$ query:{foo:“bar”},$ orderby:{x:1}})
问题:有没有办法可以看到shell转换后的查询? 换句话说,给定一个查询,我可以通过shell看到转换后的查询形式吗?
答案 0 :(得分:1)
您无法从shell中看到确切的查询,但您可以确切地看到帮助程序的功能(sort
,size
等)。离开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
运算符。