我正在开发用于维护每日记录的计费软件。我正在使用PyGTk(用于UI)和MongoDB(NoSQL)数据库。我以以下格式存储每张帐单的记录
git flow feature finish
我希望从记录中获得以下信息:
样本输出
{
"_id" : ObjectId("5b83f95a3859201d46385779"),
"date" : "27/08/2018",
"bill_number" : 7,
"bill_amount" : 85,
"payment_mode" : "Cash",
"bill_content" : [
{
"item_code" : 1,
"item_name" : "abc",
"item_count" : 1
},
{
"item_code" : 2,
"item_name" : "xyz",
"item_count" : 2
}
]
}
{
"_id" : ObjectId("5b83f95f3859201d4638577b"),
"date" : "27/08/2018",
"bill_number" : 8,
"bill_amount" : 125,
"payment_mode" : "Card",
"bill_content" : [
{
"item_code" : 3,
"item_name" : "xyz",
"item_count" : 2
},
{
"item_code" : 2,
"item_name" : "abc",
"item_count" : 1
}
]
}
{
"_id" : ObjectId("5b83f95f3859201d4638577b"),
"date" : "27/08/2018",
"bill_number" : 8,
"bill_amount" : 125,
"payment_mode" : "Online",
"bill_content" : [
{
"item_code" : 3,
"item_name" : "abc",
"item_count" : 1
},
{
"item_code" : 2,
"item_name" : "xyz",
"item_count" : 3
},
{
"item_code" : 1,
"item_name" : "pqr",
"item_count" : 1
}
]
}
我是NoSQL的新手,因此无法弄清楚在一个查询中做所有事情。请告诉我是否有可能,或者是否有更好的存储方式。
答案 0 :(得分:0)
如果要从每个记录中获取特定属性,则可以通过创建游标并迭代其中的每个记录来轻松访问它。
假设您的集合名称为'billing_software',那么您可以使用以下代码段获取所需的输出:
collection = db.billing.software
all_records = collection.find({})
for records in all_records:
temp = dict()
temp['date'] = records['date]
print(temp)
无论如何,回到您的原始问题。对于您的情况,您可能需要汇总,然后按日期对集合进行分组。
有用的链接: 1. https://docs.mongodb.com/manual/reference/method/db.collection.aggregate/ 2. https://docs.mongodb.com/manual/reference/operator/aggregation/group/