MongoDB数据库SQl语法

本文介绍了MongoDB中的一些实用查询技巧,包括如何限制查询结果的字段显示、如何获取当前记录的前后记录、以及如何使用$lt、$gt等操作符进行条件筛选。此外,还详细解释了$mod操作符的作用。
//限制查询结果字段只有item和qty:
db.inventory.find( { type: 'food' }, { item: 1, qty: 1 } )
//返回除type外的其它字段
db.inventory.find( { type: 'food' }, { type:0 } )
//nest record:
db.posts.find({_id: {$gt: curObjectId}}).sort({_id: 1 }).limit(1);
//previous record:
db.posts.find({_id: {$lt: curObjectId}}).sort({_id: -1 }).limit(1)
//> $gt , >= $gte, < $lt, <= $lte, != $ne
db.tianyc02.find({age:{$lt:100}})
//$in & $nin
db.tianyc02.find({age:{$in:[11,22]}})
// $or
db.tianyc02.find({$or:[{age:11},{age:22}]})
// $not
> db.tianyc02.find({age:{$mod:[11,0]}})
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "name" : "xtt", "age" : 11 }
{ "_id" : ObjectId("50ea6b7312729d90ce6e341c"), "name" : "xtt", "age" : 22 }
> db.tianyc02.find({age:{$not:{$mod:[11,0]}}})
{ "_id" : ObjectId("50ea6eba12729d90ce6e3423"), "name" : "xttt", "age" : 111 }
{ "_id" : ObjectId("50ea6eba12729d90ce6e3424"), "name" : "xttt", "age" : 222 }
//$mod会将查询的值除以第一个给定的值,若余数等于第二个给定的值,则返回该结果。
//$not与正则表达式联合使用时极为有效,用来查找那些与特定模式不匹配的文档。
### MongoDB与MySQL查询语句转换 #### 查询所有记录 在关系型数据库MySQL中,为了获取表中的所有记录,通常会执行如下命令: ```sql SELECT * FROM table_name; ``` 而在MongoDB里,则通过`find()`方法来实现相同的功能[^1]: ```javascript db.collection_name.find(); ``` #### 条件查询 当需要基于特定条件检索数据时,在MySQL环境下可以这样操作: ```sql SELECT * FROM table_name WHERE column_name operator value; ``` 比如查找年龄大于30岁的成员。 对于MongoDB而言,这可以通过向`find()`传递一个文档作为参数完成同样的筛选工作[^3]: ```javascript db.collection_name.find({column_name: {$operator: "value"}}); ``` 例如寻找年龄超过30岁的人群可写作: ```javascript db.member_audit.find({"age": {"$gt": 30}}); ``` #### 投影(Projection) 如果只希望返回某些字段而不是整个文档的内容,在MySQL中有这样的表达方式: ```sql SELECT field1,field2,... FROM table_name; ``` 同样地,在MongoDB中也可以指定要显示哪些字段。注意这里的语法稍有不同,需设置不想看到的其他字段为0或想要查看的目标字段设为1: ```javascript db.collection_name.find({}, {field1: 1, field2: 1, _id: 0}); ``` #### 排序结果集 为了让最终的结果按照某个字段升序/降序排列,在SQL世界里一般这样做: ```sql SELECT * FROM table ORDER BY column ASC|DESC; ``` 而MongoDB提供了`.sort()`函数用于此目的: ```javascript db.collection_name.find().sort({fieldName: 1|-1}); //其中1代表升序,-1表示降序 ``` #### 聚合框架简介 除了基本CRUD之外,聚合也是处理复杂业务逻辑不可或缺的一部分。尽管两者都支持复杂的汇总计算等功能,但它们各自的实现机制存在差异。以统计各年龄段人数为例: - **MySQL** ```sql SELECT COUNT(*), age GROUP BY age FROM users; ``` - **MongoDB** 使用了管道的概念来进行多阶段的数据加工 ```javascript db.users.aggregate([ { $group : { "_id" : "$age", "count" : {$sum : 1} } } ]); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值