RejectedSoftware Forums

Sign up

$orderby mongodb query

How to query like db.collection.find( { $query: {}, $orderby: { age : -1 } } ) or db.collection.find().sort( { age: -1 } )

this doesn't work

auto res = coll.find(
		Bson(["$query": Bson.emptyObject]), 
		Bson(["$orderby":Bson(["age":Bson(-1)])])
		);

Output is

Query failed.
0x004E6996 in pure @safe void std.exception.bailOut(immutable(char)[], uint, const(char[]))
0x004A8BF8 in void vibe.db.mongo.cursor.MongoCursorData.handleReply(vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(180)
0x004A87D7 in vibe.db.mongo.cursor.MongoCursorData vibe.db.mongo.cursor.MongoCursorData.__ctor(vibe.db.mongo.client.MongoClient, immutable(char)[], int, vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(134)
0x004A84D9 in ref vibe.db.mongo.cursor.MongoCursor vibe.db.mongo.cursor.MongoCursor.__ctor(vibe.db.mongo.client.MongoClient, immutable(char)[], int, vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(30)
0x004A49E0 in vibe.db.mongo.cursor.MongoCursor vibe.db.mongo.collection.MongoCollection.find!(vibe.data.bson.Bson, vibe.data.bson.Bson).find(vibe.data.bson.Bson, vibe.data.bson.Bson, vibe.db.mongo.connection.QueryFlags, int, int) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\collection.d(137)
0x004A480A in vibe.data.bson.Bson vibe.db.mongo.collection.MongoCollection.findOne!(vibe.data.bson.Bson, vibe.data.bson.Bson).findOne(vibe.data.bson.Bson, vibe.data.bson.Bson, vibe.db.mongo.connection.QueryFlags) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\collection.d(155)
...

Re: $orderby mongodb query

On Wed, 02 Oct 2013 15:32:20 GMT, Roman wrote:

How to query like db.collection.find( { $query: {}, $orderby: { age : -1 } } ) or db.collection.find().sort( { age: -1 } )

this doesn't work

auto res = coll.find(
		Bson(["$query": Bson.emptyObject]), 
		Bson(["$orderby":Bson(["age":Bson(-1)])])
		);

Output is

Query failed.
0x004E6996 in pure @safe void std.exception.bailOut(immutable(char)[], uint, const(char[]))
0x004A8BF8 in void vibe.db.mongo.cursor.MongoCursorData.handleReply(vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(180)
0x004A87D7 in vibe.db.mongo.cursor.MongoCursorData vibe.db.mongo.cursor.MongoCursorData.__ctor(vibe.db.mongo.client.MongoClient, immutable(char)[], int, vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(134)
0x004A84D9 in ref vibe.db.mongo.cursor.MongoCursor vibe.db.mongo.cursor.MongoCursor.__ctor(vibe.db.mongo.client.MongoClient, immutable(char)[], int, vibe.db.mongo.connection.Reply) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\cursor.d(30)
0x004A49E0 in vibe.db.mongo.cursor.MongoCursor vibe.db.mongo.collection.MongoCollection.find!(vibe.data.bson.Bson, vibe.data.bson.Bson).find(vibe.data.bson.Bson, vibe.data.bson.Bson, vibe.db.mongo.connection.QueryFlags, int, int) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\collection.d(137)
0x004A480A in vibe.data.bson.Bson vibe.db.mongo.collection.MongoCollection.findOne!(vibe.data.bson.Bson, vibe.data.bson.Bson).findOne(vibe.data.bson.Bson, vibe.data.bson.Bson, vibe.db.mongo.connection.QueryFlags) at C:\Users\Roman\AppData\Roaming\dub\packages\vibe-d-master\source\vibe\db\mongo\collection.d(155)
...

Solution is

auto res = coll.find(
 		Bson(["$query": Bson.emptyObject, 
		      "$orderby":Bson(["age":Bson(-1)])])
 		);

P.S ;)

Re: $orderby mongodb query

Yeah, this is quite confusing thing about mongodb protocol - all stuff is just the very same single query, even $orderby and similar utility flags.

Re: $orderby mongodb query

P.S. Maybe this should be mentioned somewhere in vibed,org docs for MongoDb as this question keeps popping up again and again.

Re: $orderby mongodb query

Am 02.10.2013 19:49, schrieb Dicebot:

P.S. Maybe this should be mentioned somewhere in vibed,org docs for MongoDb as this question keeps popping up again and again.

Update: We have .sort() now, and additional functions are also easy to
add: [#353][https://github.com/rejectedsoftware/vibe.d/pull/353].