数据库之MongoDB篇

数据类型

增删改查

python操作MongoDB

一、MongoDB数据类型

Object  ID :Documents 自生成的 _id

String: 字符串,必须是utf-8

Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

Double:浮点数 (没有float类型,所有小数都是Double)

Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

Null:空数据类型 , 一个特殊的概念,None Null

Timestamp:时间戳

Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

更多数据类型介绍参见:https://www.cnblogs.com/DragonFire/p/9135854.html

二、增删改查

!!!使用了不存在的对象 即 创建该对象

增:

db.tablename.insert: 3.2有新方式,不推荐[{}];

官方推荐 :insertone返回 _id、insertMany([{}]):返回 _ids

db.users.insert([{'name':'lv','age':30}])
db.users.insertMany([{'name1':'lv','age':30},{'name2':'hei','age':27},

查:

db.tablename.find()查询符合条件的数据 返回:类型

findone 第一条... Json

条件:{name:2}#列表name=2;并列条件:多个key-value对;

db.users.find({age:{$in:[31,3,5]}})
db.users.find({$or:[{age:{$in:[31,3,5]}},{name:'lv'}]})
db.users.find({}).limit(6).skip(4)

改:

db.tablename.update({},{$set())#3.2后不再支持,更新符合条件的数据,默认第一条

updateOne({'age':99},{$set("name":"JW8")})# $set为修改器:强制修改满足条件的字段

updateMany #修改所有符合条件的数据

db.users.update({},{$set:{'age':30}})
db.users.update({},{$set:{'hobby':[1,2,3,'xiangqi']}})
db.users.updateMany({age:27},{$set:{'hobby':['tongwawa',]}})
db.users.updateOne({age:30},{$push:{'hobby':['tongwawa',]}})
db.users.updateOne({age:30},{$pushAll:{'hobby':[4,6,5]}})
db.users.updateOne({age:30},{$pull:{'hobby':['tongwawa',]}})
db.users.update({},{$set:{'objects':{"name":'wenjie'}}})
db.users.updateOne({age:30},{$pop:{'hobby':1}})
db.users.updateOne({age:30},{$pop:{'hobby':-1}})
db.users.updateOne({age:30,hobby:2},{$set:{'hobby.$':'wenjie'}})
db.users.updateOne({age:30,hobby:1},{$inc:{'hobby.$':10}})

删:

db.tablename.remove({}) #3.2有新方式,不推荐;

deleteOne、deleteMany

db.users.deleteMany({'age':30})

三、python操作MongoDB

from pymongo import MongoClient
conn=MongoClient('127.0.0.1',27017)
MONGODB=conn['phoneAI']
#示例代码
@auth.route('/login',methods=['GET','POST'],endpoint='login',strict_slashes=False)
def login_func():
    if request.method=='POST':
        user_info =request.form.to_dict()
        user=MONGODB.user.find_one(user_info)
        print(user)
        if not user:
            return '用户名或密码错误!'
        else:
            session['user_id'] = str(user['_id'])
            return redirect('display')
    return render_template('login.html')
#查询语句
goods_list = MONGODB.goods.find()
res_list = list(MONGODB.content.find({}))
good=MONGODB.goods.find_one({'goodname':goodname})
user = MONGODB.users.find_one(user_info,{"password":0})
toy_info = MONGODB.toys.find_one({"_id":ObjectId(tid)})
user = MONGODB.users.find_one({"_id": ObjectId(toy_info["bind_user"])})
chat_window = MONGODB.chats.find_one({"user_list":{"$all":[from_user,to_user]}})

device_key = request.form.to_dict() # {"device_key":341252346}
toy = MONGODB.devices.find_one(device_key)

from bson import ObjectId
user = MONGODB.user.find_one({'_id': ObjectId(session['user_id'])})

#更新语句 MONGODB.user.update_one({'_id': ObjectId(session['user_id'])}, {"$set": user}) MONGODB.chats.update_one({"_id":chat_window.inserted_id},{"$set":{"user_list":[str(toy.inserted_id),toy_info["bind_user"]]}}) MONGODB.chats.update_one({"_id":chat_window.inserted_id},{"$set":{"user_list":[str(toy.inserted_id),toy_info["bind_user"]]}})
#插入(增加)语句 MONGODB.users.insert_one(user_info) MONGODB.cartlog.insert_one(clear_dic) MONGODB.content.insert_many(content_list) chat_window = MONGODB.chats.insert_one({"user_list":[],"chat_list":[]}) # 建立聊天窗口 chat_window = MONGODB.chats.insert_one({"user_list":[req_info.get("toy_id"),req_info.get("add_user")],"chat_list":[]}) code_list = [] code_info = {"device_key":code_hash} code_list.append(code_info) MONGODB.devices.insert_many(code_list)
@chat.route("/chat_list",methods=["POST"])
def chat_list():
    chat_info = request.form.to_dict()
    chat_window = MONGODB.chats.find_one({"_id":ObjectId(chat_info.get("chat_id"))})

    RET["CODE"] = 0
    RET["MSG"] = "查询聊天记录"
    RET["DATA"] = chat_window.get("chat_list")

    get_chat(chat_info.get("to_user"),chat_info.get("from_user"))

    return jsonify(RET)
posted @ 2019-06-02 18:08  海予心  阅读(140)  评论(0编辑  收藏  举报