查询条件

比较

无关键字表示相等或包含。

{ "x.价格": 50 } :价格为50的商品
{ "x.作者s": ["张三", "李四"] } :张三和李四合著的书(也可能还有其它作者)

$ne

not equal:匹配所有不等于指定值的值。
{ "x.价格": { $ne: 50 } } :价格不为50的商品

$gt

greater than:匹配大于指定值的值。

$gte

greater than or equal:匹配大于或等于指定值的值。

$lt

less than:匹配小于指定值的值。
{ "x.价格": { $gt: 10, $lt:50 } } :选择价格在11到49间(含)的文档

$lte

less than or equal:匹配小于或等于指定值的值。
{ "x.价格": { $gte: 11, $lte: 49 } } :同上

$in

匹配数组中指定的任何值。.
{ "x.姓名": { $in: ["张三", "李四"] } } :只查找这两人的数据

$nin

not in:不匹配数组中指定的任何值。
{ "x.姓名": { $nin: ["张三", "李四"] } } :排除这两人的数据

$expr

比较同一条数据里的两个字段,可以使用$eq、$ne、$lt、$lte、$gt、$gte运算符。
compare fields from the same document.
{ $expr: { $gt: ["x.已花", "y.预算"] } } :查找超预算的开销

逻辑

$and

返回满足所有子句条件的文档。
{ $and: [ { "x.价格": { $ne: 1.99 } }, { "x.价格": { $exists: true } } ] }:查找价格不为空且不为1.99的商品

$or

返回与任一子句条件匹配的文档。
{ $or: [ { "x.数量": { $lt: 20 } }, { "x.价格": 10 } ] } :查找数量小于20或者价格为10的商品

$nor

返回所有不能匹配的文档。
{ $nor: [ { "x.价格": 1.99 }, { "x.已售": true } ] } :查找价格不为1.99未售商品

$not

返回不匹配的文档,包括该字段为空的文档。
{ "x.价格": { $not: { $gt: 1.99 } } }:查找价格不为1.99或价格未设置的商品

元素

存在

不存在:{ "x.姓名": null }{ "x.姓名": { $eq: null } };存在:{ "x.姓名": { $ne: null } }

$empty

字段为空对象的文档(无键值对)。
{ "x": { $empty: true }:只能匹配到{ x: {} } ;"x.个人信息": { $empty: false} } :要不不存在【x.个人信息】,要不至少存在一个个人信息,如{ x: { 个人信息: { 年龄: 35 } } }

$like/
$ilike

模糊匹配。
{ "x.姓名": { $like: "张" } } :姓名含有"张"就行,不管是姓还是名。
{ "x.姓名": { $like: "^张" } } :查找张姓用户(
^表示开头);
{ "x.姓名": { $like: "三$" } } :查找"三"结尾的用户(
$表示结尾);
{ "x.姓名": { $ilike: "Smith" } } :姓名含有"Smith"的人(
$表示结尾,i表示忽略大小写);
{ "x.作者s": { $like: "张" } } :张写过的书(【张】可以是姓也可以是名;【x.作者】可以是个数组)。

数组

$size

匹配数组长度为指定大小的文档。
{ "x.标签": { $size: 0 } } :标签数组为空
{ "x.标签": { $size: { $gt: 2, $lt: 5 } } } :标签长度在2和5之间

由众触低代码平台生成和驱动