Python [mongo] - 转换 find() 的 return 字段
Python [mongo] - convert return fields of find()
需要从 Mongo 获取特定字段,
数据库很大,所以我更喜欢以正确的格式获取值,并且
没有 post 处理它。
例如,
有2个字段需要转换格式:
1_id: ObjectId('604e0dbc96a0c93a45bfc5b0') 字符串为“604e0dbc96a0c93a45bfc5b0:
2.birthdate: ISODate('1999-11-10T00:00:00.000Z') - 日期格式为“10/11/1999”的字符串。
MongoDB 中 json 的示例:
{
_id: ObjectId('604e0dbc96a0c93a45bfc5b0'),
address: 'BOB addrees',
name: 'BOB',
last_name: 'Habanero',
birthdate: ISODate('1000-11-10T00:00:00.000Z')
}
检索 Jsons 特定字段:
customers_cursor = DB.customer.find({},{"_id": 1,"name" :1 ,"last_name":1 ,"customer_type":1,"address.0":1 ,"email":1 ,"birthdate" :1 ,"customer_status":1} )
是否可以选择使用转换函数来返回 find() 中的值?
如果不是,当我有几个字段需要格式化值并且 MongoDB 中有数百万条记录时,我最好的选择是什么?
演示 - https://mongoplayground.net/p/4OcF0O74PvU
您必须使用聚合查询来执行此操作。
使用 $toString
将对象转换为字符串
使用$dateToString格式化你的日期
db.collection.aggregate([
{
"$project": {
"_id": {
"$toString": "$_id"
},
"name": 1,
"last_name": 1,
"customer_type": 1,
"address.0": 1,
"email": 1,
"birthdate": {
"$dateToString": {
"format": "%d/%m/%Y",
"date": "$birthdate"
}
},
"customer_status": 1
}
}
])
需要从 Mongo 获取特定字段, 数据库很大,所以我更喜欢以正确的格式获取值,并且 没有 post 处理它。
例如, 有2个字段需要转换格式:
1_id: ObjectId('604e0dbc96a0c93a45bfc5b0') 字符串为“604e0dbc96a0c93a45bfc5b0: 2.birthdate: ISODate('1999-11-10T00:00:00.000Z') - 日期格式为“10/11/1999”的字符串。
MongoDB 中 json 的示例:
{
_id: ObjectId('604e0dbc96a0c93a45bfc5b0'),
address: 'BOB addrees',
name: 'BOB',
last_name: 'Habanero',
birthdate: ISODate('1000-11-10T00:00:00.000Z')
}
检索 Jsons 特定字段:
customers_cursor = DB.customer.find({},{"_id": 1,"name" :1 ,"last_name":1 ,"customer_type":1,"address.0":1 ,"email":1 ,"birthdate" :1 ,"customer_status":1} )
是否可以选择使用转换函数来返回 find() 中的值? 如果不是,当我有几个字段需要格式化值并且 MongoDB 中有数百万条记录时,我最好的选择是什么?
演示 - https://mongoplayground.net/p/4OcF0O74PvU
您必须使用聚合查询来执行此操作。
使用 $toString
将对象转换为字符串使用$dateToString格式化你的日期
db.collection.aggregate([
{
"$project": {
"_id": {
"$toString": "$_id"
},
"name": 1,
"last_name": 1,
"customer_type": 1,
"address.0": 1,
"email": 1,
"birthdate": {
"$dateToString": {
"format": "%d/%m/%Y",
"date": "$birthdate"
}
},
"customer_status": 1
}
}
])