Chinaunix首页 | 论坛 | 博客
  • 博客访问: 842968
  • 博文数量: 146
  • 博客积分: 3444
  • 博客等级: 中校
  • 技术积分: 1602
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-21 15:18
文章分类

全部博文(146)

文章存档

2014年(9)

2013年(3)

2012年(6)

2011年(44)

2010年(38)

2009年(46)

分类: NOSQL

2014-03-04 10:50:56

用于查询的文档如下

点击(此处)折叠或打开

  1. {
  2.   "_id": ObjectId("52fc6617e97feebe05000000"),
  3.   "age": 28,
  4.   "level": NumberInt(500),
  5.   "name": "name5",
  6.   "person": [
  7.     {
  8.       "level": 5,
  9.       "score": 100,
  10.     "ccc":{"ccc3":56,"fff3":78}
  11.     },
  12.     {
  13.       "level": 7,
  14.       "score": 90,
  15.       "like": "music"
  16.     }
  17.   ],
  18.   "score": NumberInt(500),
  19.   "sex": "男"
  20. }
方法一:

db.testColl.find({"person.level":7});


db.testColl.find({"person.ccc.ccc3":56});


均可查出结果,就是说这种方法可以嵌套使用!

方法二、使用$elemMatch操作符

db.testColl.find({"person":{"$elemMatch":{"level":5}}});

可以查出结果

db.testColl.find({"person":{"$elemMatch":{"ccc":{"$elemMatch":{"ccc3":56}}}}});

无法查出结果

db.testColl.find({"person":{"$elemMatch":{"ccc":{"ccc3":56,"fff3":78}}}});
db.testColl.find({"person":{"$elemMatch":{"ccc.ccc3":56}}});

可以查出结果
也就是说第二种方法不能嵌套使用。


阅读(11690) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~