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"

是否可以在MongoDB中不使用
$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
是数组中的数组。对,但是有什么解决方案。。。。。。。