2017-06-29 96 views
0

我刚开始使用MongoDB,所以我很抱歉,如果这是一个明显或简单的问题。MongoDB收藏与数据结构

我尝试使用下面的数据结构来存储我的信息:

database: { 
    Customers: { 
     Date_added_1: { 
      {customer 1 info}, 
      {customer 2 info}, 
      {customer 3 info} 
     } 
     Date_added_2: { 
      {customer 1 info}, 
      {customer 2 info} 
     } 
    } 
    Employees: { 
     Date_hired_1: { 
      {employee 1 info}, 
      {employee 2 info} 
     } 
     Date_hired_2: { 
      {employee 1 info} 
     } 
    } 
} 

我写输入信息到数据库的代码如下所示:

from pymongo import MongoClient 

def addLeadsToDatabase(personCategory, personInformation, date): 

    client = MongoClient('localhost', port#) 

    db = client.database[personCategory][date] 

    db.insert({personInformation}) 



person_to_add = {'Name':'John Smith', 'Phone':'888-888-8888', 'Email':'[email protected]'} 



addLeadsToDatabase('Customers', person_to_add, '06/28/2017') 

但是导航时通过数据库,它看起来像每个[personCategory] ​​[日期]被保存为一个单独的集合。而不是先将数据存储在personCategory集合中,然后再存储在日期子集合中。

因此当我在MongoDB中运行 '节目集合' 外壳它输出:

Customers.6/25/2017 
Employees.6/25/2017 
Customers.6/26/2017 
Customers.6/27/2017 
Employees.6/27/2017 

而不是仅仅:

Customers 
Employees 

与存储在每个日期类别。

有没有一种方法可以按照我所描述的方式存储数据,所以每次运行代码并将数据存储在相应集合中时都不会创建新集合?

回答

0

请考虑:

from pymongo import MongoClient 

def addLeadsToDatabase(personCategory, personInformation): 

client = MongoClient('localhost', port#) 

db = client.database[personCategory] 
db.insert({personInformation}) 

person_to_add = {'Name':'John Smith', 'Phone':'888-888-8888', 'Email':'[email protected]', 'Date': '06/28/2017' } //I would suggest you to use new Date() 

addLeadsToDatabase('Customers', person_to_add) 

摘要:

保持简单。稍后,您可以按日期进行过滤,甚至可以在此日期之前汇总查询。

+0

谢谢您的意见。然而,信息的“类型”客户和员工并不是我正在使用的实际数据。我将每周收集20k条不同的数据,“日期”是一个重要的分类要素。我担心如果将这些数据存储在一起会减慢查询速度。因此,我认为最好将它按日期分开,以便每个集合限制为20k条数据,并且在每个集合中查询会更快。另外,我很确定MongoDB在一个集合中限制了MB。 – learningToCode54321

+0

对不起,如果我的替换数据的类型分散了'技术'问题,因为你的答案似乎考虑到了存储数据的实际含义。 – learningToCode54321

+0

呃..你说你有这个客户。2017/6/25,而不是客户。那是什么使混淆。我从来没有见过子集合,如果存在,我会很好奇。 – Cleriston