Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- import pymongo
- from pprint import pprint
- from random import randint
- from fire import Fire
- def insert():
- db = pymongo.MongoClient().toto
- for _ in range(100):
- db.toto.insert_one(
- {
- "transactions": [
- {"id": randint(0, 100000), "hello": randint(0, 1000)}
- for _ in range(100000)
- ]
- }
- )
- def create_index():
- db = pymongo.MongoClient().toto
- db.toto.create_index("transactions.id")
- def drop_indexes():
- db = pymongo.MongoClient().toto
- db.toto.drop_indexes()
- def drop():
- pymongo.MongoClient().drop_database("toto")
- def slow_query():
- db = pymongo.MongoClient().toto
- r = list(
- db.toto.aggregate(
- [
- {"$match": {"transactions.id": 17}},
- {"$unwind": "$transactions"},
- {"$match": {"transactions.id": 17}},
- ]
- )
- )
- pprint(r[:10])
- return len(r)
- def query():
- db = pymongo.MongoClient().toto
- r = list(
- db.toto.aggregate(
- [
- {"$match": {"transactions.id": 17}},
- {
- "$addFields": {
- "transactions": {
- "$filter": { # We override the existing field!
- "input": "$transactions",
- "as": "comment",
- "cond": {"$eq": ["$transaction.id", 17]},
- }
- }
- }
- },
- ]
- )
- )
- pprint(r[:10])
- return len(r)
- def new_query():
- db = pymongo.MongoClient().toto
- r = list(
- db.toto.aggregate(
- [
- {"$match": {"transactions.id": 17}},
- {
- "$project": {
- "transactions": {
- "$filter": {
- "input": "$transactions",
- "as": "transaction",
- "cond": {"$eq": ["$$transaction.id", 17]},
- }
- }
- }
- },
- {"$unwind": "$transactions"},
- ]
- )
- )
- pprint(r[:10])
- return len(r)
- def test_query():
- db = pymongo.MongoClient().toto
- r = list(db.toto.find({"transactions.id": 17}))
- pprint(r[:10])
- return len(r)
- if __name__ == "__main__":
- Fire()
Advertisement
Add Comment
Please, Sign In to add comment