【发布时间】:2016-04-17 20:12:25
【问题描述】:
我有两个不同的收藏书和音乐在 JSON 中。首先我举一个收藏的例子:
{
"_id" : ObjectId("b1"),
"author" : [
"Mary",
],
"title" : "Book1",
}
{
"_id" : ObjectId("b2"),
"author" : [
"Joe",
"Tony",
"Mary"
],
"title" : "Book2",
}
{
"_id" : ObjectId("b3"),
"author" : [
"Joe",
"Mary"
],
"title" : "Book3",
}
.......
玛丽写了 3 本书,乔写了 2 本书,托尼写了 1 本书。其次我举一个音乐收藏的例子:
{
"_id" : ObjectId("m1"),
"author" : [
"Tony"
],
"title" : "Music1",
}
{
"_id" : ObjectId("m2"),
"author" : [
"Joe",
"Tony"
],
"title" : "Music2",
}
.......
托尼有 2 首音乐,乔有 1 首音乐,玛丽有 0 首音乐。
我希望得到更多的作者写的书多于音乐。
因此,应该考虑 Mary(3 > 0) 和 Joe(2 > 1),而不是 Tony(1
我写了以下代码,但不知道如何比较:
db.book.aggregate([
{ $project:{ _id:0, author:1}},
{ $unwind:"$author" },
{$group:{_id:"$author", count:{$sum:1}}}
]
)
db.music.aggregate([
{ $project:{ _id:0, author:1}},
{ $unwind:"$author" },
{$group:{_id:"$author", count:{$sum:1}}}
]
)
到目前为止是正确的吗?如何进行以下比较?谢谢。
【问题讨论】:
-
这是also your account 还是你们两个可能一起工作?这几乎是一个exact duplicate of this now deleted question,唯一的区别是将一个集合命名为
"music"(出于某种奇怪的原因),而不是"paper",因为它最初在那里。正如最初评论的那样,这实际上只是“循环结果”来比较。如果您想要更高性能的东西,请将所有数据放在“一个”集合中。
标签: mongodb