关于python中使用mongodb模块,save和insert的小问题

  今天写python脚本的时候发现这样一个问题:

import os , string , datetime ,pymongo;
conn = pymongo.Connection("127.0.0.1",27017);
db = conn.nn;
coll = db.nn_res;
value = dict(name="user1",num="1");
coll.save(value);
coll.insert(value);
View Code

  执行脚本之后会发现,save和insert只执行了一条,而且跟insert和save出现的先后顺序没有关系,然后我去查看官网上关于save和insert的说明,发现save的部分解释是这样的:

db.collection.save(document)

Updates an existing document or inserts a new document, depending on its document parameter.

The save() method takes the following parameter:
    Parameter     Type     Description
    document     document     A document to save to the collection.

    If the document does not contain an _id field, then the save() method performs an insert. During the operation, mongod will add to the document the _id field and assign it a unique ObjectId.

    If the document contains an _id field, then the save() method performs an upsert, querying the collection on the _id field. If a document does not exist with the specified _id value, the save() method performs an insert. If a document exists with the specified _id value, the save() method performs an update that replaces all fields in the existing document with the fields from the document.
View Code

  于是我猜想这个“_id"域是我们在创建对象的时候就被分配好了的,而不是在插入mongodb之后,数据库随机分配一个给我们的,于是我这样做: 

import os , string , datetime ,pymongo;
conn = pymongo.Connection("127.0.0.1",27017);
db = conn.nn;
coll = db.nn_res;
value1 = dict(name="user1",num="1");
value2 = dict(name="user1",num="1");
coll.save(value1);
coll.insert(value2);
View Code

  正如所料,都插入成功了。后来我又想这样会不会也都成功呢?

import os , string , datetime ,pymongo;
conn = pymongo.Connection("127.0.0.1",27017);
db = conn.nn;
coll = db.nn_res;
coll.save({"name":"user1","num":"1"});
coll.insert({"name":"user1","num":"1"});
View Code

  发现也都成功了。忽然又觉得这个跟自己所说的(”于是我猜想这个“_id"域是我们在创建对象的时候就被分配好了的,而不是在插入mongodb之后,数据库随机分配一个给我们的")有点背道而驰,但我也只好自我安慰说最后一种插入方式“_id”在{}操作的时候便已经被初始化好了。

  也许有人会说可能mongodb有一个自我hash的功能,但是也说不通。这个还真是有点让人困惑呀,我还需要再仔细想想。

 

转载于:https://www.cnblogs.com/RainingDays/p/3412172.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,可以使用Pillow库来压缩图片,然后使用PyMongo库将压缩后的图片插入MongoDB。下面是一个示例: 首先,需要安装Pillow和PyMongo库: ``` pip install pillow pymongo ``` 接下来,假设有一个名为 `images` 的集合,其有一个名为 `image` 的字段用于存储图片。可以使用以下代码将压缩后的图片插入到该集合: ```python from PIL import Image from io import BytesIO import pymongo # 连接到MongoDB client = pymongo.MongoClient("mongodb://localhost:27017/") db = client["mydatabase"] collection = db["images"] # 打开图片文件 with open("example.jpg", "rb") as f: # 读取图片数据 img_data = f.read() # 将图片数据加载到Pillow img = Image.open(BytesIO(img_data)) # 压缩图片 img = img.resize((int(img.width / 2), int(img.height / 2))) # 将压缩后的图片转换为字节流 output = BytesIO() img.save(output, format="JPEG") output_data = output.getvalue() # 将压缩后的图片插入到MongoDB result = collection.insert_one({"image": output_data}) print("Inserted image with ID:", result.inserted_id) ``` 以上代码,首先连接到MongoDB,然后打开图片文件并读取图片数据。接下来,将图片数据加载到Pillow,并对图片进行压缩。然后,将压缩后的图片转换为字节流,并使用PyMongo将该字节流插入到MongoDB。 执行以上代码后,会将压缩后的图片插入到MongoDB,并输出该图片的ID。注意,该示例仅演示了如何将压缩后的图片插入到MongoDB,实际应用可能需要对图片进行更多的处理和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值