问题描述
- mongo中下面三个语句的区别
-
语句1:
{ "contents" : { "$elemMatch" : { "$and" : [ { "$and" : [ { "fieldName" : "140"} , { "content" : "北京"}]} , { "$and" : [ { "fieldName" : "100"} , { "content" : "颐和园"}]}]}}}
语句2:
{contents : { "$all" : [ { "$elemMatch" : { "fieldName" : "140" , "content" : "北京"} }, { "$elemMatch" : { "fieldName" : "100" , "content" : "颐和园"} } ] }}
语句3:
{contents : { "$and" : [ { "$elemMatch" : { "fieldName" : "140" , "content" : "北京"} }, { "$elemMatch" : { "fieldName" : "100" , "content" : "颐和园"} } ] }}这三条语句的本意都是查询document的contents中必须包含符合 “北京”,“圆明园”的记录。
document的json结构如下:
{
"_id" : ObjectId("54d30a36aa3a1843bbb83190"),
"contents" : [{
"fieldId" : "5459d21914ead51e28a3823b",
"fieldName" : "100",
"group" : 0,
"content" : "颐和园"
},{
"fieldId" : "54cf2de229146b2d26cb441e",
"fieldName" : "140",
"group" : 0,
"content" : "北京"
}]
}望能详细说解释一下三个语句的区别?
解决方案
MongoDB 支持多种复杂的查询方式,能实现大多数 T-SQL 功能,远不是 Key-Value 之类的 NoSQL DB 所能比拟的。
Conditional Operators : $slice //切片
Conditional Operators : $lt <, $lte <=, $gt >, $gte >=
Conditional Operator : $ne //不等于
Conditional Operator : $in //属于
Conditional Operator : $nin //不属于
Conditional Operator : $mod //取模运算
Conditional Operator: $all //全部属于
Conditional Operator : $size //数量
Conditional Operator: $exists //字段存在
Conditional Operator: $type //字段类型
Conditional Operator: $or // 或
Regular Expressions //正则表达式
Value in an Array // 数组中的值
Conditional Operator: $elemMatch //要素符合
Value in an Embedded Object //内嵌对象中的值
Meta operator: $not //不是
Javascript Expressions and $where //
sort() //排序
limit() //限制取数据条数
skip() //跳过一定数值开始取
snapshot() //
count() // 数量
group() //分组