mongo 操作大集锦

> db     --查看当前的数据库

> show collections   --查看数据库中包含的集合

1、单条插入

> post = {"title":"myblog post","content":"here is blogpast","date":new Date()}   ---创建一个变量post内容是文档

> db.blog.insert(post)  ---利用insert方法保存文档到blog集合中去

>db.blog.insert({"name":"blog","author":"wangwei"}); --可以直接插入不用定义变量

> db.blog.find()  --查询文档

2、批量插入

MongoDB对批量插入的支持是通过传递多个文档组成的数组到数据库来实现的。由于它插入数据是通过发送TCP请求的,这样只需发送单个TCP请求,且数据库无需处理大量的消息头,减少插入时间。这种方式的批量插入一次只能将多个文档插入到一个集合中,对于插入到多个集合可以循环调用Insert操作。


二、Remove操作

remove函数可以用来删除数据,它能接受一个文档作为可选参数,只有符合条件的文档才会被删除。删除数据是永久性的,不能撤销,也不能恢复,需要谨慎。删除文档需要清空整个集合,不如直接删除集合快。


三、Update操作

update函数用于修改数据库中的数据,它接收两个参数,一个是查询文档,用来查找要更新的文档,另一个是修改器文档,用来描述对找到的文档做哪些修改。更新操作是原子性的,如果多个更新同时发生,则所有的更新都会执行,但最后的更新是最终赢家。

2、局部更新(修改器)

 部分更新是通过原子的更新修改器实现的,使用修改器时除了”_id“的值不能改变,其他任何值都能改变。文档替换是可以改变所有值的。

 $inc修改器:将指定属性的值增加特定的步长,如果键不存在则创建它。

$set修改器:用来指定一个键的值,如果不存在则创建它。

$push:数组修改器,如果指定的键存在,则向已有的数组末尾加入一个元素,键不存在则会创建一个新的数组。

3、upsert操作

upsert操作具有saveOrUpdate的功能,如果没有文档符合更新条件,则以更新条件和更新文档为基础创建一个新的文档。如果有符合更新条件的文档,则正常更新。创建新文档时会以条件文档作为基础,将修改器作用其之上。upsert操作是原子性的,高效的。

4、批量更新

批量更新只需将update的第4个参数设为true即可。

四、瞬间完成

上面的插入,删除和更新操作都是瞬间完成的,它们不需要等待数据库响应。这样的实现可以获取高性能,速度非常快,只会受客户端发送速度和网络速度的制约。但由于不会获取服务器状态,所以不能保证操作顺利完成。这对于付费系统,安全性较高的系统是不可行的,此时对这些操作需要使用它们的安全版本。安全版本会在操作执行后立即运行getLastError命令,来检查是否执行成功。如果失败一般会抛出可捕获的异常,然后我们可以在代码中处理。



一些可能有用的链接:

http://www.jb51.net/article/48217.htm

http://blog.csdn.net/mengxiangyue/article/details/9970803

http://blog.csdn.net/mcpang/article/details/7746598

http://www.350351.com/jiagoucunchu/nosql/43924.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是实现 MongoDB 操作的类的一个示例: ``` import pymongo class MongoOperator: def __init__(self, host, port, username, password, db_name): """ 初始化连接信息 """ self.host = host self.port = port self.username = username self.password = password self.db_name = db_name self.client = None self.db = None def connect(self): """ 连接到 MongoDB 服务器 """ self.client = pymongo.MongoClient(self.host, self.port) self.db = self.client[self.db_name] # 如果设置了用户名和密码,则需要进行身份认证 if self.username and self.password: self.db.authenticate(self.username, self.password) def close(self): """ 关闭与 MongoDB 服务器的连接 """ self.client.close() def insert_one(self, collection_name, doc): """ 向集合中插入一条文档 """ collection = self.db[collection_name] result = collection.insert_one(doc) return result.inserted_id def insert_many(self, collection_name, docs): """ 向集合中插入多条文档 """ collection = self.db[collection_name] result = collection.insert_many(docs) return result.inserted_ids def find_one(self, collection_name, filter, projection=None): """ 从集合中查询一条文档 """ collection = self.db[collection_name] if projection: return collection.find_one(filter, projection) else: return collection.find_one(filter) def find(self, collection_name, filter, projection=None): """ 从集合中查询多条文档 """ collection = self.db[collection_name] if projection: return collection.find(filter, projection) else: return collection.find(filter) def update_one(self, collection_name, filter, update): """ 更新集合中的一条文档 """ collection = self.db[collection_name] result = collection.update_one(filter, update) ### 回答2: 实现一个Mongo操作类可以辅助我们更方便地对MongoDB进行数据操作。首先,我们需要引入MongoDB官方提供的mongoDB Driver for Node.js。然后,我们可以定义一个Mongo类,该类包含连接MongoDB并操作数据的一些方法。 ``` const { MongoClient } = require('mongodb'); class Mongo { constructor(url, dbName) { this.url = url; this.dbName = dbName; this.client = new MongoClient(url, { useNewUrlParser: true, useUnifiedTopology: true }); this.db = null; } async connect() { try { await this.client.connect(); this.db = this.client.db(this.dbName); console.log('Connected to MongoDB successfully'); } catch (error) { console.error('Failed to connect to MongoDB', error); } } async insertOne(collectionName, document) { try { await this.db.collection(collectionName).insertOne(document); console.log('Document inserted successfully'); } catch (error) { console.error('Failed to insert document', error); } } async findOne(collectionName, query) { try { const result = await this.db.collection(collectionName).findOne(query); console.log('Found document:', result); return result; } catch (error) { console.error('Failed to find document', error); return null; } } // 其他操作方法,如updateOne、deleteOne等等可以类似地实现 async disconnect() { try { await this.client.close(); console.log('Disconnected from MongoDB'); } catch (error) { console.error('Failed to close MongoDB connection', error); } } } module.exports = Mongo; ``` 以上是一个简单的Mongo操作类的实现,通过这个类我们可以连接MongoDB数据库、插入文档、查询文档等操作。我们在构造函数中传入MongoDB的URL和数据库名称,然后可以调用`connect()`方法来连接数据库,操作完数据后可以调用`disconnect()`方法来断开数据库连接。 ### 回答3: 实现一个 MONGO 操作类可以通过以下步骤进行: 首先,需要引入 MongoDB 官方提供的驱动程序,可以使用 Pymongo。在 Python 中使用 Pymongo 操作 MongoDB 数据库非常方便。 然后,可以创建一个 MONGO 操作类,该类可以包含以下方法: 1. 连接数据库方法:可以在该方法中使用 Pymongo 提供的 MongoClient 连接到 MongoDB 数据库。可以传入连接参数,如数据库的 IP 地址和端口号。 2. 选择数据库方法:可以在该方法中选择要操作的数据库。可以利用连接数据库方法返回的 MongoClient 对象的属性来选择数据库。 3. 选择集合方法:可以在该方法中选择要操作的集合。可以使用 MongoClient 对象的属性选择集合。 4. 插入文档方法:可以在该方法中插入文档到指定的集合中。可以使用集合对象的 insert_one 或 insert_many 方法来插入文档。 5. 查询文档方法:可以在该方法中查询指定条件的文档。可以使用集合对象的 find 方法来查询文档。 6. 更新文档方法:可以在该方法中更新符合条件的文档。可以使用集合对象的 update_one 或 update_many 方法来更新文档。 7. 删除文档方法:可以在该方法中删除符合条件的文档。可以使用集合对象的 delete_one 或 delete_many 方法来删除文档。 8. 断开数据库方法:可以在该方法中断开与 MongoDB 数据库的连接。可以使用 MongoClient 对象的 close 方法来断开连接。 通过以上步骤,就可以实现一个 MONGO 操作类,该类可以用于连接、选择数据库、选择集合、插入文档、查询文档、更新文档和删除文档等操作。利用该类,可以更加方便地对 MongoDB 数据库进行操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值