- ## insert_some_count_records.py
- import couchdbkit
- s = couchdbkit.Server("http://localhost:5984")
- d = s.get_or_create_db("view_sort_testing")
- d.flush()
- def add_test_data():
- for name in ("a", "b"):
- for x in [1, 3, 5, 7, 9, 11, 13, 15, "sandbox"]:
- doc = {"name": name, "time": x}
- print "Adding", doc
- d.save_doc(doc)
- def add_design_doc():
- design = {
- "_id": "_design/test",
- "views": {
- "names_by_time": {
- "map": "function(doc) { emit([doc.name, doc.time], null); }",
- }
- }
- }
- if design["_id"] in d:
- del d[design["_id"]]
- d.save_doc(design)
- def get_latest(name):
- start = [name, 'a']
- r = d.view("test/names_by_time", descending=True, limit=1, startkey=start)
- return r.first()
- def get_earliest_after_time(name, time):
- start = [name, time]
- r = d.view("test/names_by_time", limit=1, startkey=start)
- return r.first()
- def main():
- print "*"*60
- print "* Adding test data..."
- add_test_data()
- print
- print "*"*60
- print "* Adding design doc..."
- add_design_doc()
- print
- print "*"*60
- print "* Getting latest document for 'a'..."
- print get_latest('a')
- print
- print "*"*60
- print "* Getting earliest after 4 for 'b'..."
- print get_earliest_after_time('b', 4)
- print
- print "*"*60
- print "* Getting earliest after 11 for 'a'..."
- print get_earliest_after_time('a', 11)
- print
- print "*"*60
- print "* Getting earliest after 1234 for 'b'..."
- print get_earliest_after_time('b', 1234)
- print
- print "done."
- if __name__ == "__main__":
- main()
- ## Output
- adam@wizard ~/Code/Python: python insert_some_couch_records.py
- ************************************************************
- * Adding test data...
- Adding {'name': 'a', 'time': 1}
- Adding {'name': 'a', 'time': 3}
- Adding {'name': 'a', 'time': 5}
- Adding {'name': 'a', 'time': 7}
- Adding {'name': 'a', 'time': 9}
- Adding {'name': 'a', 'time': 11}
- Adding {'name': 'a', 'time': 13}
- Adding {'name': 'a', 'time': 15}
- Adding {'name': 'a', 'time': 'sandbox'}
- Adding {'name': 'b', 'time': 1}
- Adding {'name': 'b', 'time': 3}
- Adding {'name': 'b', 'time': 5}
- Adding {'name': 'b', 'time': 7}
- Adding {'name': 'b', 'time': 9}
- Adding {'name': 'b', 'time': 11}
- Adding {'name': 'b', 'time': 13}
- Adding {'name': 'b', 'time': 15}
- Adding {'name': 'b', 'time': 'sandbox'}
- ************************************************************
- * Adding design doc...
- ************************************************************
- * Getting latest document for 'a'...
- {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf1061ce', u'key': [u'a', 15]}
- ************************************************************
- * Getting earliest after 4 for 'b'...
- {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf104832', u'key': [u'b', 5]}
- ************************************************************
- * Getting earliest after 11 for 'a'...
- {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf106998', u'key': [u'a', 11]}
- ************************************************************
- * Getting earliest after 1234 for 'b'...
- {u'value': None, u'id': u'c4fa0242adc74e6db00be5f0bf1011fd', u'key': [u'b', u'sandbox']}
- done.