MongoDB Query Documents

  • mongodb查询操作,和python操作mongodb
    官网查询例子
    MongoDB Query Documents_第1张图片
  • 这一页提供查询操作的例子,在mongo shell控制台使用db.collection.find()方法.在这一页的例子使用的集合是inventory.运行下面的代码填充inventory集合.
  • 我直接在可视化工具运行mongo shell的代码了
db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

MongoDB Query Documents_第2张图片


MongoDB Query Documents_第3张图片

  • 查询某个集合的全部文档
  • 在集合中查询全部的文档,使用find方法通过传递一个空的文档做过滤的参数.这个查询过滤参数决定了查询的标准
  • 如下:
# {}就是空的查询过滤参数
db.inventory.find({})
# 不传递空的过滤参数也可以,如
db.inventory.find()
  • 这个操作对应mysql的语句
SELECT * FROM inventory
  • 关于更多find()方法的信息,请看find()
  • mongo shell操作结果
    MongoDB Query Documents_第4张图片
  • python操作结果
import pymongo


class MyMongo:
    def __init__(self):
        # URI
        # self.uri = 'mongodb://username:password@host:port'
        # 因为没有用户名和密码,所以不用填
        self.uri = 'mongodb://192.168.19.128:27017'
        self.client = pymongo.MongoClient(self.uri)
        self.db = self.client.test

    def find(self):
        resp = self.db.inventory.find({})
        print(resp)

    def close(self):
        self.client.close()
        print('mongodb已关闭')


if __name__ == '__main__':
    mon = MyMongo()
    mon.find()
    mon.close()
  • 打印结果是这个
    在这里插入图片描述
  • 可以将其转list
    MongoDB Query Documents_第5张图片
  • 或者遍历打印
    MongoDB Query Documents_第6张图片

MongoDB Query Documents_第7张图片

  • 指定相等的条件
  • 指定相等的条件,在查询过滤文档中使用 :表达式
  • 在下面的例子查询inventory集合中所有status等于D的文档
db.inventory.find( { status: "D" } )
  • 先来看下inventory的全部文档
    MongoDB Query Documents_第8张图片
  • 执行上面的语句(status用引号括起来也可以的)
    MongoDB Query Documents_第9张图片
  • python操作
def find(self):
	resp = self.db.inventory.find({'status': 'D'})
	# print(list(resp))
	for r in resp:
	    print(r)

MongoDB Query Documents_第10张图片


MongoDB Query Documents_第11张图片

  • 只用查询操作符指定条件
  • 查询过滤文档可以使用查询操作符来指定条件,如下:
{ <field1>: { <operator1>: <value1> }, ... }
  • 下面的例子是从inventory集合中检索所有文档的status等于A或者D的文档
# $in查询操作符
db.inventory.find( { status: { $in: [ "A", "D" ] } } )

MongoDB Query Documents_第12张图片

  • 笔记
  • 虽然也可以使用$or查询操作符来表达status等于A或D,但是当检查字段相等的时候应使用$in而不是$or

你可能感兴趣的:(mongodb)