根据条件将 mongodb 个文档分成两组
Group mongodb documents into two groups based on a condition
我有 collection task
,其中有几千个文档。每个文档都有一个 success
字段,其值是 true
或 false
。这是一个示例文档:
{
"_id" : ObjectId("5bd31f64c3a106f0392a7213"),
"current_user_id" : 9,
"company_id" : 239,
"project_id" : 2,
"user_action" : "create_project",
"success" : true,
"uuid" : "cf0cb41c-9c3b-4f2f-b82b-3516d2c18fc2",
"created_at" : "2018-10-26 17:06:28.479871"
}
我想将文档分为两类:一个数组中具有 success: true
的文档,另一个数组中具有 success: false
的文档。
我尝试使用过滤器 success:true
进行两个查询,第一个使用过滤器 success:false
,另一个使用 success:false
:
db.getCollection('tasks').find({ 'company_id': 239,
'success': true
})
您可以通过几种方式获取数据
First way
db.collectionName.aggregate([
{
$facet: {
"true": [
{
$match: {
"success" : true
}
}
],
"false": [
{
$match: {
"success" : false
}
}
]
}
}
])
Second way
db.collectionName.aggregate([
{
$group: {
"_id": "$success",
result: {
$push: {
"current_user_id" : 1,
"company_id" : 1,
"project_id" : 1,
"user_action" : 1,
"uuid" : 1,
"created_at" : 1
}
}
}
}
])
如果您有任何问题,请告诉我。
您可以使用此查询:
db.col.aggregate([{ $group: { _id:"$success","data" : {"$push" : "$$ROOT"}}}])
我有 collection task
,其中有几千个文档。每个文档都有一个 success
字段,其值是 true
或 false
。这是一个示例文档:
{
"_id" : ObjectId("5bd31f64c3a106f0392a7213"),
"current_user_id" : 9,
"company_id" : 239,
"project_id" : 2,
"user_action" : "create_project",
"success" : true,
"uuid" : "cf0cb41c-9c3b-4f2f-b82b-3516d2c18fc2",
"created_at" : "2018-10-26 17:06:28.479871"
}
我想将文档分为两类:一个数组中具有 success: true
的文档,另一个数组中具有 success: false
的文档。
我尝试使用过滤器 success:true
进行两个查询,第一个使用过滤器 success:false
,另一个使用 success:false
:
db.getCollection('tasks').find({ 'company_id': 239,
'success': true
})
您可以通过几种方式获取数据
First way
db.collectionName.aggregate([
{
$facet: {
"true": [
{
$match: {
"success" : true
}
}
],
"false": [
{
$match: {
"success" : false
}
}
]
}
}
])
Second way
db.collectionName.aggregate([
{
$group: {
"_id": "$success",
result: {
$push: {
"current_user_id" : 1,
"company_id" : 1,
"project_id" : 1,
"user_action" : 1,
"uuid" : 1,
"created_at" : 1
}
}
}
}
])
如果您有任何问题,请告诉我。
您可以使用此查询:
db.col.aggregate([{ $group: { _id:"$success","data" : {"$push" : "$$ROOT"}}}])