all-mongo中下面三个语句的区别

问题描述

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() //分组

时间: 2024-09-15 13:09:29

all-mongo中下面三个语句的区别的相关文章

MySQL中union和join语句使用区别的辨析教程_Mysql

union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同的(Schema of both sides of union should match.).也就是说如果A表中有三条数据,B表中有两条数据,那么A union B就会有五条数据.说明一下union 和union all的差别,对于union如果存在相同的数据记录会被合并,而union all不会合

Java中for、while、do while三种循环语句的区别介绍_java

本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; fo

基于SQL中的数据查询语句汇总

以下是对SQL中的数据查询语句进行了汇总介绍,需要的朋友可以过来参考下   where条件表达式 --统计函数 复制代码 代码如下: Select count(1) from student; --like模糊查询 --统计班上姓张的人数 复制代码 代码如下: select count(*) from student where realName like '张%'; --统计班上张姓两个字的人数 复制代码 代码如下: select count(*) from student where rea

jsp中sql的insert语句问题

问题描述 jsp中sql的insert语句问题 下面这段话有什么问题,输入已有的用户名会执行"该用户名已存在",但是输入新的用户名显示注册成功但是数据库里没有新的记录,应该是赋值语句有问题,请问insert语句哪里错了呢 String username=request.getParameter("r_user"); String password=request.getParameter("r_password"); sql=conn.creat

javascript怎样在一个页面中加三个js

问题描述 javascript怎样在一个页面中加三个js window.onload = rolloverInit; function rolloverInit() { for (var i=0; i<document.links.length; i++) var linkObj = document.links[i]; if (linkObj.className) { var imgObj = document.getElementById(linkObj.className); if (im

链表的结构-关于链表中的几个语句的含义

问题描述 关于链表中的几个语句的含义 在链表中 1.head=head->next;的含义 2.Link *p=new Link(head->next);的含义; 3.p=p->next;的含义 4.p->next=q;的含义 5.像p->next这样的语句到底指的是数值还是指针 6.什么是循链定位 解决方案 1,head显然是头指针,这里我们假设链表元素下标从1开始(第一个节点,第二个节点,第三个节点) head指向第一个节点(head存储的值是第一个节点的内存地址) he

JavaScript中的三种弹出对话框

        学习过js的小伙伴会发现,我们在一些实例中用到了alert()方法.prompt()方法.prompt()方法,他们都是在屏幕上弹出一个对话框,并且在上面显示括号内的内容,使用这种方法使得页面的交互性更精彩,实际上我们经常会在进行网页浏览时简单这种类型的对话框,在用户与应用程序进行双向交流时,经常要用到对话框.avascript的三种对话框是通过调用window对象的三个方法alert(),confirm()和prompt()来获得,可以利用这些对话框来完成js的输入和输出,实现

gb2312-java中链接数据库的语句问题

问题描述 java中链接数据库的语句问题 sql = new String(sql.getBytes(),"gb2312"); 请问这句话的具体意思是什么 解决方案 将sql转化为用gb2312编码构成的字符串. 解决方案二: 将你的SQL进行GB2312编码 解决方案三: 现将sql语句变成字节数组,再通过GB2312编码将字节数组构建成字符串

代码-使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句

问题描述 使用C语言1. 读取一个.C文件,删除该文件中所有的注释语句 读取一个.C文件,删除该文件中所有的注释语句.然后写入到新的.C文件里. 要求: 删除注释语句功能采用动态链接库形式 在功能实现的基础上: --单元测试要足够充分 --要通过所有的MISRA C的检查 --代码要符合代码规范. 解决方案 #include int main() { FILE *fp,*fp1; char str[99]=""; int i=0; fp=fopen("test.c"