学习Mongodb(二)

1. 当执行插入的时候,使用的驱动程序会将数据转换成BSON 的形式,然后将其送入数据库,文档不超过4M

2.db.users.remove()

3.db.mailing.list.remove({"opt-out":true})

for i in range(1000000):

collection.insert({"foo":"bar", "baz":i, "z": 10 -i})


import time

from pymongo import Connection


db = Connection.foo

        collection = db.bar

        start = time.time()


        collection.remove()

       collection.find_one()


         total = time.time() - start

        print "%d seconds" % total

46.08s

db.drop_collection("bar")

==> remove 以及 find_one 0.01

不能有任何限制条件,索引也没有了

2. 更新

var joe = db.users.findOne({"name": "joe"});

joe.relationships = {};

joe.username = joe.name

delete joe.friends

delete joe.enemies;

delete joe.name

db.users.update({"name":"joe"}, joe);

db.users.update 更新数据不为一条时会出错 duplicate

3.修改器

db.analytics.update({"url" : "www.example.com"}, 

{"$inc" : {"pageviews" : 1}})

db.analytics.find()

a.$inc 修改值 若不存在则创建

b.$set 增加字段修改字段

db.users.update({"_id":ObjectId("sdfsd")},

{"$set": {"favorite book" : "war and peace"}})

{"$set" : {"key" : ["",""]}}

$unset   删除键值

做更新最好用$开头的修饰修改

c. 数组修改器

$push 向已有数组末尾添加一个元素

若没有该元素则创建

如果一个值不存在就加进去,

$ne

db.papers.update({"authors cited": {"$ne": "Richie"}}, 

{$push : {"authors cited" : "Richie"}})

$addToSet  可以达到 $ne功能

$addToSet 与$each合作可以一次插入多条

$pop从数组删除 key : -1 1 从头部还是尾部删除一个元素

$pull 将匹配部分删掉

comments.0  comment.$.author

upsert

db.foo.save(x)

getLastError getLastOpStatus

4.db.users.find({},{username:1});

db.users.find({"age":{"$gte":18,"$lte":30}})

start = new Date("01/01/2007")

db.users.find({"registered": {"$lt":starrt}})

$ne

db.raffle.find({"ticket_no":{"$in":[725,542,390]}})

$nin

db.raffle.find({"$or":[{"ticket_no":725},{"winner":true}]})

db.raffle.find({"$or":[{"ticket_no":{"$in":[725,542,390]},{"winner":true}]});

$not

db.users.find({"id_num":{“$mod”:[5,1]}})   id_num%5==1

db.users.find({"id_num":{"not", "{“$mod”:[5,1]}"}})  

一个键可以有多个条件,但是不能有多个更新修改器

db.c.find({"z":{"$in":[null], "$exitsts":true}})//否则当z不存在时返回所有

db.users.find({"name": /joe/i})

数组

$all

db.food.find({fruit: {$all:["apple","banana"]}})

"fruit.2" :"peach"

"fruit": {"$size":3}

"comments"  : {"$slice" : 10 /-10} 前/后10条评论

$slice[23,10]

db.people.find({"name.first" : “Joe”, "name.last" : "Schmoe"})


db.blog.find({"comments" : {"$elementMatch" : {"author" : "joe", "score" : {"$gte" : 5}}}})

db.foo.find({"where" : "this.x + this.y == 10"})

避免用$wheer性能下降

var cursor = db.foo.find().sort({"x":1}).limit(1).skip(10);

cursor.hasNext()开始执行

db.stock.find({"desc" : "mp3"}).limit(50).sort({"price":-1});

db.stock.find({"desc":"mp3"}).limit(50).skip(50).sort({"price":-1});

略过过多的结果会导致性能问题

利用最后一个文档的排序字段作为查询条件获取下一页

var page1 = db.foo.find().sort({"date":-1})。limit(100)

var latest = null;

while (page1.hasNext()) {

latest = page1.next();

}

var page2 = db.foo.find({"date" : {"$gt" : lastest.date}});

page2.sort({"date" : -1}).limit(100);

$maxscan min max hint explain snapshot


python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值