1
다음과 같은 메시지가 있습니다. 이제는 ObjectId ("57f55e4799aabf1c0565bc10") 메시지를 수신하거나 자체 메시지 (ObjectId ("57f55e4799aabf1c0565bc10"))를 제외한 모든 고유 사용자를 얻고 싶습니다. 그래서 어떻게 집계를 사용하여 달성 할 수 있습니다.mongodb aggregation을 통해 모든 다른 사용자를 얻으십시오.
/* 1 */
{
"_id" : ObjectId("57f55e0199aabf1c0565bc0e"),
"message" : "fghjfghj",
"to" : ObjectId("57f54e154df8d0193577889a"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:09:37.307Z"),
"createdDate" : ISODate("2016-10-05T20:09:37.307Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 2 */
{
"_id" : ObjectId("57f55e2d99aabf1c0565bc0f"),
"message" : "ghjkfhkg",
"to" : ObjectId("57f54e154df8d0193577889a"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:10:21.245Z"),
"createdDate" : ISODate("2016-10-05T20:10:21.245Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 3 */
{
"_id" : ObjectId("57f55e4799aabf1c0565bc10"),
"message" : "hgkgh",
"to" : ObjectId("57f54e154df8d0193577889a"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:10:47.614Z"),
"createdDate" : ISODate("2016-10-05T20:10:47.614Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 4 */
{
"_id" : ObjectId("57f55e7199aabf1c0565bc11"),
"message" : "cbjngcfj",
"to" : ObjectId("57f54e154df8d0193577889a"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:11:29.197Z"),
"createdDate" : ISODate("2016-10-05T20:11:29.197Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 5 */
{
"_id" : ObjectId("57f5801d94ef64d760275368"),
"message" : "cbjngcfj",
"from" : ObjectId("57f54e154df8d0193577889a"),
"to" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:11:29.197Z"),
"createdDate" : ISODate("2016-10-05T20:11:29.197Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 6 */
{
"_id" : ObjectId("57f5865494ef64d76027536a"),
"message" : "hgkgh",
"to" : ObjectId("57f54e154df8d0193577889b"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-05T20:10:47.614Z"),
"createdDate" : ISODate("2016-10-05T20:10:47.614Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 7 */
{
"_id" : ObjectId("57f666de7d13f10b5aa53527"),
"message" : "Zsdfsdf",
"to" : ObjectId("57f54dd36df11022ac5d7769"),
"from" : ObjectId("57f54dd36df11022ac5d7769"),
"modifiedDate" : ISODate("2016-10-06T14:59:42.943Z"),
"createdDate" : ISODate("2016-10-06T14:59:42.943Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 8 */
{
"_id" : ObjectId("57f667397d13f10b5aa53528"),
"message" : "HIIIIIIIIIIIII",
"to" : ObjectId("57f54dd36df11022ac5d7769"),
"from" : ObjectId("57f54dd36df11022ac5d7769"),
"modifiedDate" : ISODate("2016-10-06T15:01:13.993Z"),
"createdDate" : ISODate("2016-10-06T15:01:13.993Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
/* 9 */
{
"_id" : ObjectId("57f66972a533c40d67ebfab8"),
"message" : "gfjghk",
"to" : ObjectId("57f54e154df8d0193577889a"),
"from" : ObjectId("57f5522099aabf1c0565bbfe"),
"modifiedDate" : ISODate("2016-10-06T15:10:42.721Z"),
"createdDate" : ISODate("2016-10-06T15:10:42.721Z"),
"isDeleted" : false,
"status" : true,
"type" : "Message",
"__v" : 0
}
나는 시도했지만 다음과 같이 필요한 결과를 얻을 수하지 않았다 않은 :
db.getCollection('conversations').aggregate([
{$match : {'type' : 'Message',
$or : [
{from : ObjectId("57f5522099aabf1c0565bbfe")},
{to : ObjectId("57f5522099aabf1c0565bbfe")}
]
}
},
{ $group: {_id : {"to" : "$to", 'from':"$from" }}},
]);
기대 결과처럼 - 어떤 제안에 대한
[
ObjectId("57f54e154df8d0193577889a")
ObjectId("57f54e154df8d0193577889b")
]
감사합니다.
감사합니다, 그것은 일했다. 또한, 솔루션을 찾을 수도 있지만 성능을 비교할 때 귀하의 쿼리가 나보다 훨씬 더 최적화 된 것으로 나타났습니다. 너무 커서 +. 감사 – rroxysam