MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MapReduce trong PyMongo

Bạn có thể sử dụng khung tổng hợp

import pymongo
conn = pymongo.MongoClient()
db = conn.test
col =  db.collection

for doc in col.aggregate([{'$unwind': '$impressions'}, 
    {'$match': {'impressions.service': 'furniture'}}, 
    {'$group': {'_id': '$impressions.id', 'impressions_count': {'$sum': 1}}}, 
    ]):
    print(doc)

Hoặc hiệu quả hơn bằng cách sử dụng $ map $ setDifference toán tử.

col.aggregate([
    { "$project": { "impressions": {"$setDifference": [{ "$map": { "input": "$impressions", "as": "imp", "in": { "$cond": { "if": { "$eq": [ "$$imp.service", "furniture" ] }, "then": "$$imp.id", "else": 0 }}}}, [0]]}}}, 
    { "$unwind": "$impressions" }, 
    { "$group": { "_id": "$impressions", "impressions_count": { "$sum": 1 }}}
])

Kết quả là:

{'_id': 122.0, 'impressions_count': 1}
{'_id': 124.0, 'impressions_count': 1}
{'_id': 127.0, 'impressions_count': 1}
{'_id': 123.0, 'impressions_count': 2}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách phù hợp để làm việc với ISODate trong Mongoose là gì

  2. MongoDB - Quyền bị từ chối đối với socket:/tmp/mongodb-27017.sock

  3. Tham chiếu so với nhúng trong MongoDB

  4. Tổng hợp theo cấp độ tháng và cấp độ năm, cũng tìm thấy mức trung bình trong MongoDB

  5. Đối sánh Elem đang trả lại tất cả dữ liệu trong khi tôi chỉ cần dữ liệu đã chọn