Mongodb 查询文档

来源:互联网 发布:模块化编程的好处 编辑:程序博客网 时间:2024/05/18 02:22

find() 方法

要从MongoDB 查询集合数据,需要使用MongoDB 的 find() 方法。

语法

基本的find()方法语法如下

>db.COLLECTION_NAME.find()
find() 方法将在非结构化的方式显示所有的文件。

pretty() 方法

结果显示在一个格式化的方式,可以使用 pretty() 方法.

语法:

>db.mycol.find().pretty()

例子

>db.mycol.find().pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "tutorials yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>
除了find() 方法外,还有一个 findOne() 法,返回一个文件。

RDBMS Where子句和MongoDB等同语句

要查询文件的一些条件的基础上,可以使用下面的操作

db.mycol.find({"by":"tutorials yiibai"}).pretty()      where by = 'tutorials yiibai'

db.mycol.find({"likes":{$lt:50}}).pretty()where likes < 50

db.mycol.find({"likes":{$lte:50}}).pretty()where likes <= 50

db.mycol.find({"likes":{$gt:50}}).pretty()where likes > 50

db.mycol.find({"likes":{$gte:50}}).pretty()where likes >= 50

db.mycol.find({"likes":{$ne:50}}).pretty()where likes != 50


AND 在MongoDB中用法

语法:



在  find() 方法,如果通过多个键分离',',那么 MongoDB 处理 AND 条件。AND 基本语法如下所示:

>db.mycol.find({key1:value1, key2:value2}).pretty()

例子

下面给出的例子将显示所有的教程,标题是“MongoDB Overview“

>db.mycol.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>
对于上面给出的例子相当于where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通过任意数量的键值对在 find 子句。

MongoDB中OR

语法:

OR条件的基础上要查询文件,需要使用$or关键字。OR 基本语法如下所示:

>db.mycol.find(   {      $or: [     {key1: value1}, {key2:value2}      ]   }).pretty()

例子

下面给出的例子将显示所有的教程,由'yiibai' 所写或标题是“MongoDB Overview '

>db.mycol.find({$or:[{"by":"yiibai"},{"title": "MongoDB Overview"}]}).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>

AND 和 OR 一起使用

例子

下面给出的例子将显示有像的文件大于100,其标题是“MongoDB Overview'或者是'yiibai' 。等效于 SQL where子句 为 'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'

>db.mycol.find("likes": {$gt:10}, $or: [{"by": "yiibai"}, {"title": "MongoDB Overview"}] }).pretty(){   "_id": ObjectId(7df78ad8902c),   "title": "MongoDB Overview",    "description": "MongoDB is no sql database",   "by": "yiibai",   "url": "http://www.yiibai.com",   "tags": ["mongodb", "database", "NoSQL"],   "likes": "100"}>
http://www.yiibai.com/mongodb/mongodb_query_document.html

查: find,findOne

语法:db.collection.find(查询表达式,查询的列);

Db.collections.find(表达式,{列1:1,列2:1});


例1:db.stu.find()

查询所有文档 所有内容

例2:db.stu.find({},{gendre:1})

查询所有文档,的gender属性 (_id属性默认总是查出来)

 

例3:db.stu.find({},{gender:1, _id:0})

查询所有文档的gender属性,且不查询_id属性

 

例3:db.stu.find({gender:’male’},{name:1,_id:0});

查询所有gender属性值为male的文档中的name属性


查询表达式:

 

1: 最简单的查询表达式

{filed:value} ,是指查询field列的值为value的文档

 

2: $ne --- != 查询表达式

{field:{$nq:value}}

作用--查filed列的值不等于 value 的文档

 

3: $nin --> not in

 

4: $all

语法:{field:{$all:[v1,v2..]}}

是指取出 field列是一个数组,且至少包含 v1,v2值

 

5: $exists

语法:{field:{$exists:1}}

作用: 查询出含有field字段的文档

 

6: $nor,

{$nor,[条件1,条件2]}

是指  所有条件都不满足的文档为真返回

 

 

7:用正则表达式查询以”诺基亚”开头的商品

例:db.goods.find({goods_name:/诺基亚.*/},{goods_name:1});

 

8: 用$where表达式来查询

例: db.goods.find({$where:'this.cat_id!= 3 && this.cat_id != 11'});

 

注意: $where查询时, mongodb是把bson结构的二进制数据转换为json结构的对象,

然后比较对象的属性是否满足表达式.

 

速度较慢



Update时可用的操作符

:

->db.user.insert({name:'lisi',age:12,sex:'male',height:123,area:'haidian'});

->db.user.update({name:'lisi'},{$set:{area:'chaoyang'},$unset:{height:1},$inc:{age:1},$rename:{sex:'gender'}});

> db.user.find();

{ "_id" :ObjectId("51fc01c4f5de93e1f2856e33"), "age" : 13,"area" : "chaoyang", "gender" : "male","name" : "lisi" }

 

$setOnInsert ->相当于mysql中的列的默认值






0 0
原创粉丝点击