Mongodb 没有展开的嵌套数组计数?
是否可以在MongoDB中不使用Mongodb 没有展开的嵌套数组计数?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,是否可以在MongoDB中不使用$unwind对嵌套数组进行计数?如果可能的话,那就帮我吧。我的json文件如下所示: { "_id" : ObjectId("57307906f051147d5317984e"), "user" : [ { "firstName" : "chetan", "lastName" : "kumar", "age" : 23, "like"
$unwind
对嵌套数组进行计数?如果可能的话,那就帮我吧。我的json文件如下所示:
{
"_id" : ObjectId("57307906f051147d5317984e"),
"user" : [
{
"firstName" : "chetan",
"lastName" : "kumar",
"age" : 23,
"like" : [
{
"bookname" : "mongo"
},
{
"bookname" : "php"
},
{
"bookname" : "java"
}
]
},
{
"firstName" : "nepolean",
"lastName" : "dang",
"age" : 26,
"like" : [
{
"bookname" : "mongo"
},
{
"bookname" : "php"
}
]
},
{
"firstName" : "Raj",
"lastname" : "kumar",
"age" : 26,
"like" : [
{
"bookname" : "mongo"
}
]
}
],
"sales" : [
{
"firstName" : "ashu",
"lastName" : "jha",
"age" : 27
}
]
}
db.userdetail.aggregate([
{"$unwind": "$user"},
{"$project": {
"likecount": { "$size": "$user.like" }
}}
]).pretty()
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 3 }
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 2 }
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 1 }
如果我使用$unwind
,那么我可以很容易地找到如下结果:
{
"_id" : ObjectId("57307906f051147d5317984e"),
"user" : [
{
"firstName" : "chetan",
"lastName" : "kumar",
"age" : 23,
"like" : [
{
"bookname" : "mongo"
},
{
"bookname" : "php"
},
{
"bookname" : "java"
}
]
},
{
"firstName" : "nepolean",
"lastName" : "dang",
"age" : 26,
"like" : [
{
"bookname" : "mongo"
},
{
"bookname" : "php"
}
]
},
{
"firstName" : "Raj",
"lastname" : "kumar",
"age" : 26,
"like" : [
{
"bookname" : "mongo"
}
]
}
],
"sales" : [
{
"firstName" : "ashu",
"lastName" : "jha",
"age" : 27
}
]
}
db.userdetail.aggregate([
{"$unwind": "$user"},
{"$project": {
"likecount": { "$size": "$user.like" }
}}
]).pretty()
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 3 }
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 2 }
{ "_id" : ObjectId("57307906f051147d5317984e"), "likecount" : 1 }
您可以使用
$filter
和$size
而不是使用$unwind
@titi23,结果会是什么?如果我尝试使用$size,它会给出err“errmsg”:“$size的参数必须是数组,但类型是:EOO”,我的错<代码>$filter似乎不是一个有用的解决方案$size
你不能像那样使用,因为like
是数组中的数组。对,但是有什么解决方案……你可以使用$filter
和$size
而不是使用$unwind
@titi23,结果会是什么?如果我尝试它给出的$size,如果没有$unwind,结果会是什么“$size的参数必须是一个数组,但类型为:EOO”,我的坏!$filter
似乎不是一个有用的解决方案。$size
您不能这样使用,因为like
是数组中的数组。对,但是有什么解决方案。。。。。。。