Python 使用pymongo查询大型Mongodb集合

Python 使用pymongo查询大型Mongodb集合,python,python-3.x,mongodb,pymongo,Python,Python 3.x,Mongodb,Pymongo,我想查询我的mongodb集合,它有超过5k条记录,每条记录都有键值对,如 { "A" : "unique-value1", "B" : "service1", "C" : 1.2321, ... }, ... 这里A总是有unique值,B有service1,service2,….service8和C是一些浮点值 我想要的是用键值对得到这样一个记录 { "A" : "unique-value1", "B" : "service1", "C" : 1.2321 } { "A

我想查询我的mongodb集合,它有超过5k条记录,每条记录都有键值对,如

{
 "A" : "unique-value1",
 "B" : "service1",
 "C" : 1.2321,
 ...
},
...
这里
A
总是有
unique
值,
B
service1,service2,….service8
和C是一些浮点值

我想要的是用键值对得到这样一个记录

{
 "A" : "unique-value1",
 "B" : "service1",
 "C" : 1.2321
}

{
  "A" : "unique-value2",
  "B" : "service2",
  "C" : 0.2321
}
{
  "A" : "unique-value3",
  "B" : "service1",
  "C" : 3.2321
}
我不知道该怎么做,早些时候我使用了MapReduce,但当时我只需要使用
A
C
键值对生成记录,但现在因为我还需要
B
我不知道该怎么做。

这就是我在做的

map_reduce = Code("""
        function () {
            emit(this.A, parseFloat(this.C));
        }
        """)
result = my_collection.map_reduce(map_reduce, reduce, out='temp_collection')

for doc in result.find({}):
    out = dict()
    out[doc['_id']] = doc['_id']
    out['cost'] = doc['value']
    out_handle.update_one(
        {'A': doc['_id']},
        {'$set': out},
        upsert=True
        )

除非我误解了你的需要,否则看起来你让事情变得更难了。只需使用find方法的第二个参数投影所需的键

for record in db.testcollection.find({}, { 'A': 1, 'B': 1, 'C': 1}):
    db.existingornewcollection.replace_one({'_id': record['_id']}, record, upsert=True)
完整示例:

from pymongo import MongoClient
from bson.json_util import dumps
db = MongoClient()['testdatabase']

db.testcollection.insert_one({
    "A": "unique-value1",
    "B": "service1",
    "C": 1.2321,
    "D": "D",
    "E": "E",
    "F": "F",
})

for record in db.testcollection.find({}, { 'A': 1, 'B': 1, 'C': 1}):
    db.existingornewcollection.replace_one({'_id': record['_id']}, record, upsert=True)

print(dumps(db.existingornewcollection.find_one({}, {'_id': 0}), indent=4))
给出:

{
    "A": "unique-value1",
    "B": "service1",
    "C": 1.2321
}

请告诉我到目前为止你都试了些什么。困难是什么?hi@prasad我已经更新了代码,之前我只保存了两个字段,所以我使用了map reduce,但是现在我需要
{“A”:“unique-value1”,“B”:“service1”,“C”:1.2321}
这看起来你只是想从源文档中投影几个字段(“A”,“B”和“C”):。