首页 > 数据库 >高效使用 PyMongo 进行 MongoDB 查询和插入操作

高效使用 PyMongo 进行 MongoDB 查询和插入操作

时间:2023-11-14 21:44:42浏览次数:31  
标签:pymongo mycol MongoDB myclient 插入 文档 address PyMongo mydb

插入到集合中:

要将记录(在MongoDB中称为文档)插入到集合中,使用insert_one()方法。insert_one()方法的第一个参数是一个包含文档中每个字段的名称和值的字典。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

mydict = { "name": "John", "address": "Highway 37" }

x = mycol.insert_one(mydict)

返回 _id 字段:

insert_one()方法返回一个InsertOneResult对象,该对象具有一个属性inserted_id,其中包含插入的文档的ID。

mydict = { "name": "Peter", "address": "Lowstreet 27" }

x = mycol.insert_one(mydict)

print(x.inserted_id)

插入多个文档:

要在MongoDB中的集合中插入多个文档,使用insert_many()方法。insert_many()方法的第一个参数是包含要插入的数据的字典列表。

mylist = [
  { "name": "Amy", "address": "Apple st 652"},
  { "name": "Hannah", "address": "Mountain 21"},
  { "name": "Michael", "address": "Valley 345"},
  # ...
]

x = mycol.insert_many(mylist)

# 打印插入文档的 _id 值列表
print(x.inserted_ids)

插入多个文档,指定ID:

如果不希望MongoDB为文档分配唯一的ID,可以在插入文档时指定 _id 字段。确保这些值是唯一的,两个文档不能具有相同的 _id

mylist = [
  { "_id": 1, "name": "John", "address": "Highway 37"},
  { "_id": 2, "name": "Peter", "address": "Lowstreet 27"},
  { "_id": 3, "name": "Amy", "address": "Apple st 652"},
  # ...
]

x = mycol.insert_many(mylist)

# 打印插入文档的 _id 值列表
print(x.inserted_ids)

查找一个:

要从MongoDB集合中选择数据,可以使用find_one()方法,它返回选择中的第一个文档。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

x = mycol.find_one()

print(x)

查找所有:

要从MongoDB集合中选择所有文档,可以使用find()方法。在find()方法中不指定参数会给出与SQL中的SELECT *相同的结果。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

for x in mycol.find():
  print(x)

仅返回部分字段:

如果想仅返回部分字段,可以在find()方法的第二个参数中指定要包含在结果中的字段。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

for x in mycol.find({}, {"_id": 0, "name": 1, "address": 1}):
  print(x)

不允许在同一对象中同时指定0和1值:

不允许在同一对象中同时指定0和1值,除非其中一个字段是 _id 字段。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

# 会出现错误,因为同时指定了0和1值
for x in mycol.find({}, {"name": 1, "address": 0}):
  print(x)

高级查询:

要进行高级查询,可以在查询对象中使用修饰符作为值。例如,使用大于修饰符 $gt 可以查找 "address" 字段以字母 "S" 或更高字母(按字母顺序)开头的文档。

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": { "$gt": "S" } }

mydoc = mycol.find(myquery)

for x in mydoc:
  print(x)

使用正则表达式过滤:

您还可以使用正则表达式作为修饰符,但正则表达式只能用于查询字符串。

例如,要仅查找 "address" 字段以字母 "S" 开头的文档,可以使用正则表达式 {"$regex": "^S"}

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

myquery = { "address": { "$regex": "^S" } }

mydoc = mycol.find(myquery)

for x in mydoc:
  print(x)

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

image

标签:pymongo,mycol,MongoDB,myclient,插入,文档,address,PyMongo,mydb
From: https://www.cnblogs.com/xiaowange/p/17832656.html

相关文章

  • jdbc批量插入
    1.开启JDBCrewriteBatchedStatements=true2.准备数据PreparedStatementpreparedStatement=connection.prepareStatement(InsertSql);3.插入数据并添加到批次preparedStatement.setObject(columnIndex,resultSet.getObject(columnIndex));preparedStatement.addBatc......
  • Webstorm 快捷键插入注释时,注释从开头开始而不是从光标处开始的解决办法
    前言在vue的模板的template标签内插入注释时,遇到注释都是从当前行的最开始插入,这个主要是配置的问题,今天特意记录一下解决办法在Vue模板中出现的问题,就到代码样式对应的模板中查找。vue的template是和HTML有关联的,所以需要找HTML的代码样式打开设置->编辑器->代码......
  • Mongodb安装-Linux
    查看服务器centos版本:cat/etc/redhat-release1、进入Mongodb官网:https://www.mongodb.com/,下载安装包  2、上传taz文件到服务器/home目录下,执行命令://解压压缩包tar-zxvfmongodb-linux-x86_64-rhel70-7.0.3.tgz//修改文件夹名mvmongodb-linux-x86_64-rhel70-......
  • 力扣-35-搜索插入位置
    一、题目力扣地址:https://leetcode.cn/problems/search-insert-position/二、解法思路与标准的二分查找一直,唯一的区别为,若所需target不在nums中,需要找到insert的索引fromtypingimportListclassSolution:"""leetcode:35在二分法的基础上延伸,若无法找到......
  • 二叉搜索树的插入 查找 删除
    //1、定义二叉搜索树类,封装查找、插入、删除操作删除最为麻烦,其中对于parent的保存用循环来记录while的条件需多加考虑#include<queue>#include<iostream>usingnamespacestd;classBinaryTreeNode{  private:  intvalue;  BinaryTreeNode*leftChild;......
  • mysql中插入emoji报错
    因为项目使用了微信登录,所以会拉取微信用户信息保存到本地数据库中,以前一直没啥问题,今天有个用户就是登不上,其他人都是可以正常登录的,结果查了一下发现他的用户名称有emiji,解决办法还算挺多的1.将数据库的utf8编码转换成utf8mb4的编码2.判断emoj进行阶段,只取汉字3.第三方依赖包......
  • MongoDB基础入门学习
    MongoDB基础入门此视频为学习尚硅谷MongoDB基础入门的学习记录导航目录MongoDB基础入门导航一、数据库什么是数据库?为什么要有数据库?数据库能做什么?数据库的服务器和客户端数据库的分类二、MongoDB常见命令安装MongoDBMongoDB的常见命令MongoDB的数据库分类操作MongoDB数据库......
  • SharePoint 页面中插入自定义代码
    我们都知道SharePoint是对页面进行编辑的。对于一些有编程基础的人来说,可能需要对页面中插入代码,这样才能更好的对页面进行配置。但是在新版本的SharePointmodern页面来说,虽然我们可以插入Embed组件。但是Embed组件中是不允许提供Script和Html脚本的。只能插入iFrame......
  • SharePoint 页面中插入自定义代码
    我们都知道SharePoint是对页面进行编辑的。对于一些有编程基础的人来说,可能需要对页面中插入代码,这样才能更好的对页面进行配置。但是在新版本的SharePointmodern页面来说,虽然我们可以插入Embed组件。但是Embed组件中是不允许提供Script和Html脚本的。只能插入iF......
  • 红黑树插入节点的模拟实现
    要学习红黑树节点的插入那么首先就要了解什么是红黑树,以及红黑树的特点。红黑树的特点本来AVL树已经很厉害了,但是红黑树的总体效率略比1AVL树高。高的大体原因。我们先来看一下红黑树和AVL树的区别。AVL树严格的保证了左子树和右子树的高度差不超过1,而红黑树则是保证了最长路径不超......