MongoDB简单使用demo

 
# -*- coding:utf-8 -*-
from pymongo import MongoClient
settings = {
    'ip': '127.0.0.1',  # ip地址
     'port': 27017,  # 端口, mongodb默认端口27017
    'db_name': 'test',  # 数据库名字
     'set_name': 'test_set'  # 集合(相当于mysql的表)名字
}


# 定义mongodb的通用接口
class MyMongoDB(object):
    # 初始化函数
    def __init__(self):
        try:
            self.conn = MongoClient(
                settings['ip'], settings['port']
            )
        except Exception as e:
            print e
        self.db = self.conn[settings['db_name']]
        self.my_set = self.db[settings['set_name']]

    # 插入数据函数定义
    def insert1(self, dic):
        print 'insert...'
        self.my_set.insert(dic)

    # 更新数据函数定义
    def update(self, olddic, newdic):
        print 'update...'
        self.my_set.update(olddic, newdic)

    # 删除数据函数定义
    def delete(self, dic):
        print 'delete...'
        self.my_set.remove(dic)

    # 查询数据函数定义
    def dbfind(self, dic):
        print 'find...'
        data = self.my_set.find(dic)
        for res in data:
            print 'name==%s, age==%s' % (res['name'], res['age'])

def main():
    dic = {'name': 'zhangsan', 'age': 22}
    mongo = MyMongoDB()

    # 插入数据
     mongo.insert1(dic)
    mongo.dbfind({'name': 'zhangsan'})  # 查看数据

     # 修改数据
     mongo.update({'name': 'zhangsan'}, {'$set': {'age': 25}})
    mongo.dbfind({'name': 'zhangsan'})  # 查看数据

     # 删除数据
     mongo.delete({'name': 'zhangsan'})
    mongo.dbfind({'name': 'zhangsan'})

if __name__ == '__main__':
    main()
# 条件操作符
# 查询集合中age大于25的记录
# for i in my_set.find({"age": {"$gt": 25}}):
#     print i

# 判断类型
# for i in my_set.find({"name": {'$type': 3}}):
#     print i

# 指定字段排序
# for i in my_set.find().sort([('age', 1)]):
#     print i

# 查询指定条数limit, 跳过指定条数skip
# 以下表示跳过两条后查询出两条信息
# for i in my_set.find().skip(2).limit(2):
#     print i

# in操作查询(包含查询)
# for i in my_set.find({'age': {'$in': (18, 26)}}):
#     print i

# or操作查询(或查询)
# for i in my_set.find({'$or': [{'age': 23}, {'age': 26}]}):
#     print i

# all操作查询(查找满足全部条件的数据)
# 先插入数据
# dic = {'name': 'lisi', 'age': 16, 'li': [1, 2, 3]}
# dic2 = {'name': 'zhangsan', 'age': 18, 'li': [1, 2, 3, 4, 5, 6]}
# my_set.insert(dic)
# my_set.insert(dic2)

# for i in my_set.find({'li': {'$all': [1, 2, 3, 4]}}):
#     print i

# push插入
# my_set.update({'name': 'lisi'}, {'$push': {'li': 4}})
# for i in my_set.find({'name': 'lisi'}):
#     print i

# pushall插入
# my_set.update({'name': 'lisi'}, {'$pushAll': {'li': [4, 5]}})
# for i in my_set.find({'name': 'lisi'}):
#     print i

# pop移除最后一个元素
# my_set.update({'name': 'lisi'}, {'$pop': {'li': 1}})
# for i in my_set.find({'name': 'lisi'}):
#     print i

# pull按值移除
# my_set.update({'name': 'lisi'}, {'$pull': {'li': [4, 5]}})
# for i in my_set.find({'name': 'lisi'}):
#     print i

# pullAll移除全部符合条件的
# my_set.update({'name': 'lisi'}, {'$pullAll': {'li': [4, 4]}})
# for i in my_set.find({'name': 'lisi'}):
#     print i

# 多级目录元素操作
# 先插入一条数据
# dic = {
#     'name': 'zhangsan',
#     'age': 18,
#     'contact': {
#         'email': '123456789@163.com',
#         'iphone': '110112114119'
#     }
# }
# my_set.insert(dic)

# 多级目录用.连接
# for i in my_set.find({'contact.iphone': '110112114119'}):
#     print i
#
# print my_set.find_one({'contact.iphone': '110112114119'})
#
# res = my_set.find_one({'contact.iphone': '110112114119'})
# print res['contact']['iphone']  # python方式取值

# 对数据进行索引操作
# 插入数据
# dic = {"name": "lisi",
#        "age": 18,
#        "contact": [{
#            "email": "111111@qq.com",
#            "iphone": "111"},
#            {
#            "email": "222222@qq.com",
#            "iphone": "222"
#            }]
#        }
# my_set.insert(dic)
# 通过索引查找数据
res = my_set.find_one({'contact.1.iphone': '222'})
print res
print res['contact'][1]['email']
# 修改
result = my_set.update(
    {'contact.1.iphone': '222'},
    {'$set': {'contact.1.email': '222222@qq.com'}}
)

注意:以上内容是个人使用的随手记录, 就是介绍了下简单的使用

欢迎大家来吐槽,准备好瓜子饮料矿泉水,开整!!!

---------------------------------------------------------------------------------------

搞笑一则:能动手尽量别吵吵

package dzs.com.MongoDB; import java.util.ArrayList; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.MongoCredential; import com.mongodb.ServerAddress; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; public class MongoDBJDBC { private static String uri ="mongodb://dzs:123456@127.0.0.1:27017/test"; @SuppressWarnings("deprecation") public static void main(String[] args){ try { //连接MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址 //ServerAddress()两个参数分别为 服务器地址 和 端口 ServerAddress serverAddress = new ServerAddress("localhost",27017); List<ServerAddress> addrs = new ArrayList<ServerAddress>(); addrs.add(serverAddress); //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码 MongoCredential credential = MongoCredential.createScramSha1Credential("admin", "test", "123456".toCharArray()); List<MongoCredential> credentials = new ArrayList<MongoCredential>(); credentials.add(credential); //1、通过连接认证获取MongoDB连接 MongoClient mongoClient = new MongoClient(addrs,credentials); MongoDatabase mongoDatabase = mongoClient.getDatabase("test"); System.out.println("1--Connect to database successfully"); //2、通过uri方式连接MongoDB uri根据选择的数据库修改登录用户dzs MongoClientURI mongoClientUri =new MongoClientURI(uri); MongoClient mongoclient =new MongoClient(mongoClientUri); //连接到数据库 MongoDatabase mongoDatabase2 = mongoclient.getDatabase("test"); System.out.println("2--Connect to database successfully"); //使用test数据库,如果不存在会自动创建 MongoCollection<Document> collection = mongoDatabase2.getCollection("test"); System.out.println("集合 test 选择成功"); /**插入文档 * 1. 创建文档 org.bson.Document 参数为key-value的格式 * 2. 创建文档集合List<Document> * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) * */ Document document = new Document("title", "MongoDB"). append("description", "database"). append("likes", 100). append("by", "Fly"); List<Document> documents = new ArrayList<Document>(); documents.add(document); collection.insertMany(documents); System.out.println("文档插入成功"); /**检索所有文档 * 1. 获取迭代器FindIterable<Document> * 2. 获取游标MongoCursor<Document> * 3. 通过游标遍历检索出的文档集合 * */ FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()) { System.out.println(mongoCursor.next()); } System.out.println("检索所有文档成功"); //更新文档 将文档中likes=100的文档修改为likes=200 collection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes", 200))); //检索查看结果 findIterable = collection.find(); mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()) { System.out.println(mongoCursor.next()); } System.out.println("更新文档成功"); //删除符合条件的第一个文档 collection.deleteOne(Filters.eq("likes", 200)); //删除所有符合条件的文档 collection.deleteMany(Filters.eq("likes", 200)); //检索查看结果 findIterable = collection.find(); mongoCursor = findIterable.iterator(); while (mongoCursor.hasNext()) { System.out.println(mongoCursor.next()); } System.out.println("删除文档成功"); } catch (Exception e) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值