最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python利用pymongo模块操作mongodb

来源:懂视网 责编:小采 时间:2020-11-09 13:08:16
文档

python利用pymongo模块操作mongodb

python利用pymongo模块操作mongodb:前段时间,公司的测试环境中的mongo数据有一部分要导入到线上的环境。 开发给提供了一堆的ObjectId,而且要求导入到线上之后,这个ObjectId还不能变。 于是我就想用python来查询并且导入到线上。顺便也学习下用python操作mongodb, 结果遇到一个坑。
推荐度:
导读python利用pymongo模块操作mongodb:前段时间,公司的测试环境中的mongo数据有一部分要导入到线上的环境。 开发给提供了一堆的ObjectId,而且要求导入到线上之后,这个ObjectId还不能变。 于是我就想用python来查询并且导入到线上。顺便也学习下用python操作mongodb, 结果遇到一个坑。

前段时间,公司的测试环境中的mongo数据有一部分要导入到线上的环境。 开发给提供了一堆的ObjectId,而且要求导入到线上之后,这个ObjectId还不能变。 于是我就想用python来查询并且导入到线上。顺便也学习下用python操作mongodb, 结果遇到一个坑。 这段时

前段时间,公司的测试环境中的mongo数据有一部分要导入到线上的环境。

开发给提供了一堆的ObjectId,而且要求导入到线上之后,这个ObjectId还不能变。

于是我就想用python来查询并且导入到线上。顺便也学习下用python操作mongodb,

结果遇到一个坑。

这段时间闲一些,于是就整理出来分享给大家。

一、首先是安装python的pymongo模块:

三种安装方式pip/easy_install/源码

	
	#//pip
	pip install pymongo

	#//easy_install
	easy_install pymongo

	#//源码
	wget https://pypi.python.org/packages/source/p/pymongo/pymongo-2.7.tar.gz
	tar zxvf pymongo-2.7.tar.gz
	cd pymongo-2.7
	python setup.py install

原文地址:http://www.linuxyan.com/shell/320.html
二、使用:

	#!/usr/bin/python
	import pymongo
	import time
	conn = pymongo.Connection("127.0.0.1",27017)
	db = conn.test #连接库test
	db.authenticate("tage","123") #用户认证


	#//插入数据,_id自动创建
	post = {"id": "1",
  "author": "Mike",
  "text": "My first blog post!",
  "tags": ["mongodb", "python", "pymongo"],
  "date": time.strftime('%Y-%m-%d %H:%M:%S')}
 posts = db.posts
	posts.insert(post) #把post数据插入posts聚合(表)中,返回一个ObjectId('...')
	

	#//批量插入(一个列表里面包含了2个字典),_id自动创建
	new_posts = [{"id": "2",
  "author": "Mike",
  "text": "Another post!",
  "tags": ["bulk", "insert"],
  "date": time.strftime('%Y-%m-%d %H:%M:%S')},
  {"id": "3",
  "author": "Eliot",
  "title": "MongoDB is fun",
  "text": "and pretty easy too!",
  "date": time.strftime('%Y-%m-%d %H:%M:%S')}]
	posts = db.posts
	posts.insert(new_posts) #把new_posts数据插入posts聚合(表)中,返回2个ObjectId('...')


	#//删除数据
	db.posts.remove() #删除posts聚合(表)中所有数据
	db.posts.remove({'id':1}) #删除posts聚合(表)中id为1的数据


	#//更新数据
	db.posts.update({'id':1},{"$set":{"text":"cscscascs"}}) #更新一个value
	db.posts.update({'id':1},{"$set":{"text":"cscscascs","title":"test title"}}) #更新多个value


	#//查询数据
	db.collection_names() #查询所有聚合名称
	db.posts.count() #统计posts聚合中的数据数量
	db.posts.find() #查询posts中所有内容
	db.posts.find_one({"author":"Mike"}) #根据条件查询posts中数据
	db.posts.find({"author":"Mike"}).sort('author') #--默认为升序
	db.posts.find({"author":"Mike"}).sort('author',pymongo.ASCENDING) #升序
	db.posts.find({"author":"Mike"}).sort('author',pymongo.DESCENDING) #降序

原文地址:http://www.linuxyan.com/shell/320.html
三、遇到的坑
刚才插入数据成功的时候,会返回一个ObjectId(‘…’)
于是当我用{‘_id’:”ObjectId(‘…’)”}查询的时候缺什么都没查到
如下:

>>> import pymongo
>>> import time
>>> db = pymongo.Connection("192.168.xx.xx",27017).linuxyan
>>> posts = db.posts
>>> post = {"id": "1",
...  "author": "Mike",
...  "text": "My first blog post!",
...  "tags": ["mongodb", "python", "pymongo"],
...  "date": time.strftime('%Y-%m-%d %H:%M:%S')}
>>> posts.insert(post)
ObjectId('53bd5a5fe138235f74b67563')

#//插入数据成功
#//利用{'author':'Mike'} 测试查询正常
>>> posts.find_one({'author':'Mike'})
{u'_id': ObjectId('53bd5a5fe138235f74b67563'), u'author': u'Mike',....}

#//利用{'_id':"ObjectId('53bd5a5fe138235f74b67563')"}查询为空
>>>posts.find_one({'_id':"ObjectId('53bd5a5fe138235f74b67563')"})	

#//如何利用ObjectId来查询?
>>> from bson import ObjectId
>>> posts.find_one({'_id':ObjectId('53bd5a5fe138235f74b67563')}) 
{ u'_id': ObjectId('53bd5a5fe138235f74b67563'), u'author': u'Mike',....}
#//原来ObjectId是一个对象,而不是一个字符串,此时我只能"呵呵",折腾两个多小时。
  • 本文固定链接: http://www.linuxyan.com/shell/320.html
  • 转载请注明: admin 于 ㄨ销声匿迹、Linux 发表
  • 声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文档

    python利用pymongo模块操作mongodb

    python利用pymongo模块操作mongodb:前段时间,公司的测试环境中的mongo数据有一部分要导入到线上的环境。 开发给提供了一堆的ObjectId,而且要求导入到线上之后,这个ObjectId还不能变。 于是我就想用python来查询并且导入到线上。顺便也学习下用python操作mongodb, 结果遇到一个坑。
    推荐度:
    标签: 操作 利用 使用
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top