我在查询我的mongoDB时尝试使用排序功能,但它失败了.相同的查询在MongoDB控制台中有效但在此处不起作用.代码如下:
import pymongo
from pymongo import Connection
connection = Connection()
db = connection.myDB
print db.posts.count()
for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({u'entities.user_mentions.screen_name':1}):
print post
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:
Traceback (most recent call last):
File "find_ow.py", line 7, in <module>
for post in db.posts.find({}, {'entities.user_mentions.screen_name':1}).sort({'entities.user_mentions.screen_name':1},1):
File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/cursor.py", line 430, in sort
File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/helpers.py", line 67, in _index_document
TypeError: first item in each key pair must be a string
Run Code Online (Sandbox Code Playgroud)
我在其他地方找到了一个链接,说如果使用pymongo,我需要放置一个'u'的钥匙,但这也不起作用.其他人让这个工作或这是一个错误.
我来自riak和redis,我从未遇到过这项服务的问题,或者进行互动.
这是mongo普遍存在的问题,而且相当无能为力.重启没有帮助.我是mongo的新手.
mongo
MongoDB shell version: 2.2.1
connecting to: test
Fri Nov 9 16:44:06 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
Run Code Online (Sandbox Code Playgroud)
这就是我在日志中看到的.
now open)
Fri Nov 9 16:44:34 [conn47] end connection 10.29.16.208:5306 (1 connection now open)
Fri Nov 9 16:45:04 [initandlisten] connection accepted from 10.29.16.208:5307 #48 (2 connections now open)
Fri Nov 9 16:45:04 [conn48] end connection 10.29.16.208:5307 (1 connection now open)
Fri Nov 9 16:45:04 [initandlisten] connection accepted from 10.29.16.208:5308 #49 (2 connections now open)
Fri …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用pymongo对mongodb服务器执行正则表达式查询.文件结构如下
{
"files": [
"File 1",
"File 2",
"File 3",
"File 4"
],
"rootFolder": "/Location/Of/Files"
}
Run Code Online (Sandbox Code Playgroud)
我想获得与模式*文件匹配的所有文件.我试过这样做
db.collectionName.find({'files':'/^File/'})
Run Code Online (Sandbox Code Playgroud)
然而我什么也得不回来,我错过了什么,因为根据mongodb文档,这应该是可能的.如果我在mongo控制台中执行查询它工作正常,这是否意味着api不支持它或我只是错误地使用它
使用PyMongo,当我尝试检索按"数字"和"日期"字段排序的对象时,如下所示:
db.test.find({"number": {"$gt": 1}}).sort({"number": 1, "date": -1})
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
TypeError: if no direction is specified, key_or_list must be an instance of list
Run Code Online (Sandbox Code Playgroud)
我的排序查询有什么问题?
我使用pymongo的SQL'Like'运算符,
db.test.find({'c':{'$regex':'ttt'}})
Run Code Online (Sandbox Code Playgroud)
但是我如何使用'不喜欢'运算符?
我试过了
db.test.find({'c':{'$not':{'$regex':'ttt'}})
Run Code Online (Sandbox Code Playgroud) 我无法使用json.loads转换为dict对象,我无法弄清楚我做错了什么.我得到的确切错误是
ValueError: Expecting property name: line 1 column 2 (char 1)
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
from kafka.client import KafkaClient
from kafka.consumer import SimpleConsumer
from kafka.producer import SimpleProducer, KeyedProducer
import pymongo
from pymongo import MongoClient
import json
c = MongoClient("54.210.157.57")
db = c.test_database3
collection = db.tweet_col
kafka = KafkaClient("54.210.157.57:9092")
consumer = SimpleConsumer(kafka,"myconsumer","test")
for tweet in consumer:
print tweet.message.value
jsonTweet=json.loads(({u'favorited': False, u'contributors': None})
collection.insert(jsonTweet)
Run Code Online (Sandbox Code Playgroud)
我很确定错误发生在第2行到最后一行
jsonTweet=json.loads({u'favorited': False, u'contributors': None})
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做才能解决它.任何意见,将不胜感激.
我在mongodb的集合中有大量数据需要分析.如何将数据导入熊猫?
我是熊猫和numpy的新手.
编辑:mongodb集合包含标记有日期和时间的传感器值.传感器值为float数据类型.
样本数据:
{
"_cls" : "SensorReport",
"_id" : ObjectId("515a963b78f6a035d9fa531b"),
"_types" : [
"SensorReport"
],
"Readings" : [
{
"a" : 0.958069536790466,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:26:35.297Z"),
"b" : 6.296118156595,
"_cls" : "Reading"
},
{
"a" : 0.95574014778624,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:27:09.963Z"),
"b" : 6.29651468650064,
"_cls" : "Reading"
},
{
"a" : 0.953648289182713,
"_types" : [
"Reading"
],
"ReadingUpdatedDate" : ISODate("2013-04-02T08:27:37.545Z"),
"b" : 7.29679823731148,
"_cls" : "Reading"
},
{
"a" : 0.955931884300997, …
Run Code Online (Sandbox Code Playgroud) 假设我插入了文档.
post = { some dictionary }
mongo_id = mycollection.insert(post)
Run Code Online (Sandbox Code Playgroud)
现在,假设我想添加一个字段并对其进行更新.我怎么做?这似乎不起作用.....
post = mycollection.find_one({"_id":mongo_id})
post['newfield'] = "abc"
mycollection.save(post)
Run Code Online (Sandbox Code Playgroud) 我需要使用pymongo使用python搜索ObjectId,但我总是得到这个错误.任何想法如何搜索?
import pymongo
from pymongo import MongoClient
from pymongo import ObjectId
gate = collection.find({'_id': ObjectId(modem["dis_imei"])})
print gate
Traceback (most recent call last):
File "C:\Users\gerswin\Documents\Proyectos\Demonio py\test.py", line 2, in <module>
import pymongo
File "C:\Python27\lib\site-packages\pymongo\__init__.py", line 80, in <module>
from pymongo.connection import Connection
File "C:\Python27\lib\site-packages\pymongo\connection.py", line 39, in <module>
from pymongo.mongo_client import MongoClient
File "C:\Python27\lib\site-packages\pymongo\mongo_client.py", line 45, in <module>
from pymongo import (auth,
File "C:\Python27\lib\site-packages\pymongo\database.py", line 22, in <module>
from pymongo.collection import Collection
File "C:\Python27\lib\site-packages\pymongo\collection.py", line 25, in <module>
from pymongo.cursor import …
Run Code Online (Sandbox Code Playgroud) 我在Python上运行MongoDB的更新.我有这条线:
self.word_counts[source].update({'date':posttime},{"$inc" : words},{'upsert':True})
Run Code Online (Sandbox Code Playgroud)
但它抛出了这个错误:
raise TypeError("upsert must be an instance of bool")
Run Code Online (Sandbox Code Playgroud)
但True
看起来像是bool的一个例子!
我该如何正确编写此更新?