コード例 #1
0
"""
我们以task tracking system为例:

如果使用了two-way-referencing, 当然你从两种object的视角都能享受referencing的
benefit。但是请注意, 每当你要修改一个task和person的关系时, 你必须执行两个update。
而这意味着, **无法在一个atomic(原子操作)** 内完成这个update。
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import pymongo
import faker, random
import time

person = test.__getattr__("person")
tasks = test.__getattr__("tasks")

def insert_test_data():
    person.remove()
    tasks.remove()
    
    fake = faker.Factory.create()
    n_person = 5
    n_task = 10

    person_data = list()
    tasks_data = list()
    
    task_id = 0
    for i in range(n_person):
コード例 #2
0
ファイル: one_to_few.py プロジェクト: MacHu-GWU/Learn-MongoDB
con:

- 对embedded document中的项查询无法利用索引
- 对embedded document的查询很不方便, 例如在: 一个person有多个task, task有
  due time。那么当查询 "在明天due的所有task" 就不是很方便, 在别的设计中完全可以
  更简单
- 由于16MB Size限制, embedded document的数量不可以太多
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time

person = test.__getattr__("person")

def insert_test_data():
    person.remove()
    
    fake = faker.Factory.create()
    n_person = 1000
    person_data = [
        {
            "name": fake.name(),
            "ssn": fake.ssn(),
            "address": [
                {
                    "street": fake.street_address(),
                    "city": fake.city(),
                    "state": fake.state(),
コード例 #3
0
ファイル: one_to_many.py プロジェクト: toro56/Learn-MongoDB
- 潜在地实现了many-to-many。从one-to-many中的many视角查询时, 只需要使用array
  operation query即可。

con:

- 从one的视角查询时, 只能获得many对象的primary_key, 如果需要获得完整的many对象,
  需要再做一次application-level join查询。
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time

products = test.__getattr__("products")
parts = test.__getattr__("parts")


def insert_test_data():
    products.remove()
    parts.remove()

    fake = faker.Factory.create()
    n_product = 20
    n_part = 100

    parts_data = [{
        "_id": i + 1,
        "partno": fake.ean(),
        "name": fake.word(),
コード例 #4
0
- 潜在地实现了many-to-many。从one-to-many中的many视角查询时, 只需要使用array
  operation query即可。

con:

- 从one的视角查询时, 只能获得many对象的primary_key, 如果需要获得完整的many对象,
  需要再做一次application-level join查询。
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time

products = test.__getattr__("products")
parts = test.__getattr__("parts")

def insert_test_data():
    products.remove()
    parts.remove()
    
    fake = faker.Factory.create()
    n_product = 20 
    n_part = 100
    
    parts_data = [
        {
            "_id": i + 1,
            "partno": fake.ean(),
            "name": fake.word(),
コード例 #5
0
ファイル: many_to_many.py プロジェクト: toro56/Learn-MongoDB
- 潜在地实现了many-to-many。从one-to-many中的many视角查询时, 只需要使用array
  operation query即可。

con:

- 从one的视角查询时, 只能获得many对象的primary_key, 如果需要获得完整的many对象,
  需要再做一次application-level join查询。
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time

items = test.__getattr__("items")
tags = test.__getattr__("tags")

def insert_test_data():
    items.remove()
    tags.remove()
    
    fake = faker.Factory.create()
    n_items = 100 
    n_tags = 100

    tags_data = [
        {
            "_id": i + 1,
            "name": fake.word(),
        } for i in range(n_tags)
コード例 #6
0
pro:


con:

- 从one视角做查询时性能不会很高

"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time, datetime

hosts = test.__getattr__("hosts")
logs = test.__getattr__("logs")


def insert_test_data():
    hosts.remove()
    logs.remove()

    fake = faker.Factory.create()
    n_host = 3
    n_log = 1000

    host_data = [{
        "_id": i + 1,
        "name": fake.url(),
        "ipaddr": fake.ipv4(),
コード例 #7
0
ファイル: one_to_few.py プロジェクト: toro56/Learn-MongoDB
con:

- 对embedded document中的项查询无法利用索引
- 对embedded document的查询很不方便, 例如在: 一个person有多个task, task有
  due time。那么当查询 "在明天due的所有task" 就不是很方便, 在别的设计中完全可以
  更简单
- 由于16MB Size限制, embedded document的数量不可以太多
"""

from __future__ import print_function, unicode_literals
from database import test
from pprint import pprint
import faker, random
import time

person = test.__getattr__("person")


def insert_test_data():
    person.remove()

    fake = faker.Factory.create()
    n_person = 1000
    person_data = [{
        "name":
        fake.name(),
        "ssn":
        fake.ssn(),
        "address": [{
            "street": fake.street_address(),
            "city": fake.city(),