我有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
进行两个查询:
db.getCollection('tasks').find({ 'company_id': 239,
'success': true
})
答案 0 :(得分:2)
您可以通过几种方法获取数据
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
}
}
}
}
])
如果您有任何问题,请告诉我。
答案 1 :(得分:0)
您可以使用以下查询:
db.col.aggregate([{ $group: { _id:"$success","data" : {"$push" : "$$ROOT"}}}])