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

làm thế nào để sử dụng nhóm trong pymongo để nhóm các hàng tương tự?

Bạn không cần sử dụng reduce chức năng thực sự giảm bất cứ điều gì. Ví dụ:

>>> coll.insert(dict(uid=1,event='a',time=1))
ObjectId('4d5b91d558839f06a8000000')
>>> coll.insert(dict(uid=1,event='b',time=2))
ObjectId('4d5b91e558839f06a8000001')
>>> coll.insert(dict(uid=2,event='c',time=2))
ObjectId('4d5b91f358839f06a8000002')
>>> coll.insert(dict(uid=3,event='d',time=4))
ObjectId('4d5b91fd58839f06a8000003')
>>> result = coll.group(['uid'], None,
                        {'list': []}, # initial
                        'function(obj, prev) {prev.list.push(obj)}') # reducer
>>> len(result) # will show three groups
3
>>> int(result[0]['uid'])
1
>>> result[0]['list']
[{u'event': u'a', u'_id': ObjectId('4d5b...0000'), u'uid': 1, u'time': 1},
 {u'event': u'b', u'_id': ObjectId('4d5b...0001'), u'uid': 1, u'time': 2}]
>>> int(result[1]['uid'])
2
>>> result[1]['list']
[{u'event': u'c', u'_id': ObjectId('4d5b...0002'), u'uid': 2, u'time': 2}]
>>> int(result[2]['uid'])
3
>>> result[2]['list']
[{u'event': u'd', u'_id': ObjectId('4d5b...0003'), u'uid': 3, u'time': 4}]

Tôi đã rút ngắn ID đối tượng trong danh sách trên để cải thiện khả năng đọc.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. cách thích hợp để tải ánh xạ mảng liên kết băm mongodb khi không sử dụng chú thích với các trình truy cập lạ

  2. Mongoose cư trú sau khi lưu

  3. MongoDB findAndModify từ nhiều máy khách

  4. Mongoose Populate không hoạt động với Array of ObjectIds

  5. Mẹo quản lý cấu hình cơ sở dữ liệu của bạn