[英]select data from two collections mongodb
我们有两台服务器在运行,并且某些数据丢失了,因此我需要检查到底是什么丢失并进行修复。 订单的数据如下所示:
{
"_id" : ObjectId("591a067bd7bc153c9bd4b5c2"),
"customer" : "cus_AeMs19HKhEZDY7",
"paymentID" : "ch_1AFb9pEz37oqk2rHVkbAfNrU",
"paymentStatus" : "PAID",
"user" : "melaniecarr23@gmail.com",
"createdOn" : ISODate("2017-05-15T19:50:19.775Z"),
"cart" : {
"username" : "melaniecarr23@gmail.com",
"totalQty" : 1,
"totalPrice" : 50,
"items" : [
{
"players" : [
{
"country" : "jlk",
"zip" : "jkl",
"state" : "jkl",
"city" : "jkl",
"address" : "jkl",
"phone" : "432",
"email" : "drmelaniecarr@gmail.com",
"last" : "Snape",
"first" : "Severus"
},
{
"adult" : null,
"country" : "jlk",
"zip" : "jlk",
"state" : "jkl",
"city" : "jkl",
"address" : "jkl",
"phone" : "432",
"email" : "melaniecarr23@gmail.com",
"last" : "Potter",
"first" : "Harry"
}
],
"price" : 50,
"numplayers" : 2,
"group" : "nonpro",
"level" : "12s",
"division" : "Junior Boys",
"field" : "Main",
"day" : "Friday",
"event" : "Junior Boys 12s",
"id" : "58d89697ffc0346230a43a8d"
}
]
},
"__v" : 0
}
对于每个cart.item,注册集合中都有一个文档,如下所示:
{
"_id" : ObjectId("590aa7a13c85042478800c52"),
"event" : "Women's B",
"paymentId" : "ch_1AFb9pEz37oqk2rHVkbAfNrU",
"createdOn" : ISODate("2017-05-13T06:24:07.609Z"),
"paymentID" : "VOLUNTEER",
"paymentStatus" : "PAID",
"__v" : 1
}
我需要对orders.cart.items数组中的项目进行计数,并查看它们是否匹配来自paymentId与订单中相同的注册结果的数量。 如果它们不相同,我需要查看那些结果。
有人可以帮助我了解如何使用mongo吗?
我真的想通了! 我必须在聚合管道中使用$ lookup:
Order
.aggregate([
{ $lookup:
{ from: "registrations",
localField: "paymentID",
foreignField: "paymentId",
as: "REGISTRATIONS"
}
}
]);
这使我可以使用ng-repeat和ng-if来显示cart.items和REGISTRATIONS数组的长度并进行比较。 如果它们不同,则显示每个内容。 正是我要找的东西,而且速度很快! 要爱聚集。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.