Skip to content

Latest commit

 

History

History
105 lines (93 loc) · 1.75 KB

jsondsl.md

File metadata and controls

105 lines (93 loc) · 1.75 KB

JsonDsl

There are 2 different DSLs which are reactivemongo.extensions.dsl.JsonDsl and reactivemongo.extensions.dsl.functional.JsonDsl. functional.JsonDsl provides infix syntax.

$doc

// Input
$doc("name" -> "foo", "surname" -> "bar", "age" -> 32)
// Output
Json.obj("name" -> "foo", "surname" -> "bar", "age" -> 32)

// Input
$docx("age", $gtx(50), $ltx(60))
// Infix syntax
"age" $gt 50 $lt 60
// Output
Json.obj("age" -> Json.obj("$gt" -> 50, "$lt" -> 60))

$ne

// Input
$ne("name" -> "foo")
// Infix syntax
"name" $ne "foo"
// Output
Json.obj("name" -> Json.obj("$ne" -> "foo"))

$gt

// Input
$gt("age" -> 16)
// Infix syntax
"age" $gt 16
// Output
Json.obj("age" -> Json.obj("$gt" -> 16))

$gte

// Input
$gte("age" -> 16)
// Infix syntax
"age" $gte 16
// Output
Json.obj("age" -> Json.obj("$gte" -> 16))

$in

// Input
$in("age", Seq(1, 2, 3))
// Infix syntax
"age" $in Seq(1, 2, 3)
// Output
Json.obj("age" -> Json.obj("$in" -> Json.arr(1, 2, 3)))

$lt

// Input
$lt("age" -> 16)
// Infix syntax
"age" $lt 16
// Output
Json.obj("age" -> Json.obj("$lt" -> 16))

$lte

// Input
$lte("age" -> 16)
// Infix syntax
"age" $lte 16
// Output
Json.obj("age" -> Json.obj("$lte" -> 16))

$nin

// Input
$nin("age", Seq(1, 2, 3))
// Infix syntax
"age" $nin Seq(1, 2, 3)
// Output
Json.obj("age" -> Json.obj("$nin" -> Json.arr(1, 2, 3)))

$set

// Input
$set("name" -> "foo", "surname" -> "bar", "age" -> 32)
// Output
Json.obj("$set" -> Json.obj("name" -> "foo", "surname" -> "bar", "age" -> 32))

$unset

// Input
$unset("name", "surname", "age")
// Output
Json.obj("$unset" -> Json.obj("name" -> "", "surname" -> "", "age" -> ""))