mongodb用子文档做为查询条件的两种方法

13320阅读 0评论2014-03-04 cnljh
分类:NOSQL

用于查询的文档如下

点击(此处)折叠或打开

  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}}});

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


上一篇:java下一个简单的mongodb的helper类
下一篇:一段完整的用jquery遍历json并显示到table中的客户端代码