【发布时间】:2015-02-16 10:10:45
【问题描述】:
我有下面的例子
{ username : 'Alex', tags: ['C#', 'Java', 'C++'] }
获取标签数组的长度
db.users.aggregate(
[
{
$project: {
tags_count: {$size: "$tags"}
}
}
]
)
但是当我有嵌套列表时如何获取长度
{ username : 'Alex', tags: [['C#', 'Java', 'C++']] }
res = collection.aggregate([{
"$match": query
},{
"$project": {
"_id": 0,
"name": "$name",
"a1":{"$properties.has_a":{"$slice":1}}, //Line #a1
}
}])
我也尝试更改 Line #a1 如下:
res = collection.aggregate([{
"$match": query
},{'$group':{'_id':{'a_list':{'$first':"$properties.has_a"}}}},{
"$project": {
"_id": 0,
"name": "$name",
"a1":{"$size":'$id.a_list'}, //Line #a1
}
}])
但没有按预期工作
文档:
{
u'_id': ObjectId('54ddcd23f084a315hju481ea'),
u'properties': [
{u'start_time': datetime.datetime(2015, 2, 13, 0, 0)},
{u'end_time': datetime.datetime(2015, 2, 13, 0, 0)},
{u'status': u'APPROVAL'},
{u'has_a': [
ObjectId('54ddc9d6f084a517dfebdeff'),
ObjectId('54ddc9dbf084a397dfebdf1a')
]
}
{u'has_b': [
ObjectId('54ddf9d6f084a317dfebdeff'),
ObjectId('54dhj9dbf084a317dfebdf1a')
]
}
]
}
has_a 也可能有类似 [] 的空列表。
【问题讨论】:
标签: mongodb aggregation-framework nested-lists