MongoDB基本例子

文档型数据库,文件存储格式为BSON(JSON的扩展),自动分片,数据结构不预先定义。不适用于事务性系统如银行或会计系统,不适用于BI商业智能。语法类似面向对象的查询语言。

e.g.

db.createCollection("user");
db.user.insert({uid:1,username:"Falcon",age:25});
db.user.update({uid:1},{$set:{age:26}})  #age=26
db.user.update({uid:1},{$inc:{age:-1}})   #age=age-1
db.things.find({name:"mongo"}).forEach(function(x) {
  print(tojson(x));});  # select * from things where name = "mongo"
db.things.sort({ts:-1}).limit(10);  # select * from things order by ts desc limit 10
db.users.find({$or:[{age:{$gt:18,$lt:30}}, {count:{$in:[18,28]}}]},{name:1,age:1})  # select name, age from users where (age > 18 and age < 30 or count in (18,28))
db.things.ensureIndex({uid:1});  # create index


### MongoDB 基本操作教程 #### 创建和切换数据库 要创建或切换到指定的数据库,可以使用 `use` 命令。如果数据库不存在,则会在首次插入数据时自动创建。 ```javascript use myDatabase ``` #### 插入文档 向集合中插入文档可以通过 `insertOne()` 或者 `insertMany()` 方法实现。下面的例子展示了如何向名为 `users` 的集合中插入一条记录: ```javascript db.users.insertOne({ "name": "Alice", "age": 25 }) ``` 对于批量插入多条记录的情况,可以这样写: ```javascript db.users.insertMany([ { "name": "Bob", "age": 30 }, { "name": "Charlie", "age": 35 } ]) ``` #### 查询文档 为了从集合中检索数据,可以利用 `find()` 函数来获取满足条件的所有文档;而当只需要获得单个符合条件的第一份文档时,则应该调用 `findOne()` 函数[^1]。 简单查询语句如下所示: ```javascript // 查找所有用户 db.users.find().prettyPrint() // 根据名字查找特定用户 db.users.findOne({"name": "Alice"}) ``` 更复杂的查询可通过组合多个键来进行过滤,类似于SQL中的AND逻辑运算符[^5]。 #### 更新文档 更新现有文档的内容有两种方式:一是通过 `updateOne()` 修改单一匹配项;二是借助 `updateMany()` 同时更改所有符合给定条件的对象。此外还有 `$set` 运算符用于仅改变指定字段而不影响其他属性。 以下是具体的例子: ```javascript // 只修改第一个找到的名字叫"Alice"的人年龄为26岁 db.users.updateOne( {"name": "Alice"}, {$set: {"age": 26}} ) // 将所有人的爱好设置为空数组 db.users.updateMany({},{$set:{"hobbies":[]}}) ``` #### 删除文档 移除不再需要的数据同样重要。为此提供了两个主要的方法——`deleteOne()` 和 `deleteMany()` ,分别用来删除第一条匹配结果或是全部相符项目。另外还有一种情况是整个集合都不再被需求,这时可以直接调用 `drop()` 来彻底清除它及其内部所有的记录[^3]。 示例代码片段如下: ```javascript // 移除姓名等于"Billy"的第一个实例 db.people.deleteOne( { name: "Billy" } ) // 清空people这个collection下的所有document db.people.drop() ``` #### 索引管理 考虑到性能优化方面的需求,在适当位置建立索引能够显著加快查询速度。MongoDB 支持多种类型的索引,其中最基本的就是升序/降序排列的单字段索引以及覆盖更多场景的复合索引。创建索引的操作非常直观,只需指定目标字段名即可完成配置[^4]。 例如,要在 users 集合上针对 age 字段构建一个正向排序(即从小到大)的索引,可以用这样的命令: ```javascript db.users.createIndex({ "age": 1 }) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值