Android mongodb筛选数组中与objectid关联的内容状态
我想通过过滤功能导入数据 我认为我们可能应该使用“聚合”而不是“查找” 我想要的数据的条件是:Android mongodb筛选数组中与objectid关联的内容状态,android,mongodb,mongodb-query,aggregation-framework,Android,Mongodb,Mongodb Query,Aggregation Framework,我想通过过滤功能导入数据 我认为我们可能应该使用“聚合”而不是“查找” 我想要的数据的条件是: 有A集合和B集合 集合的“内容”指向B集合的“\u id” 仅当B集合的“可见性”值为“true”时,才会获取相应的值 “A”系列: { "_id" : ObjectId("aaaaa"), "title" : "study list", "contents" : [ ObjectId("11111"), ObjectId("22222") ] } { "_id" :
{
"_id" : ObjectId("aaaaa"),
"title" : "study list",
"contents" : [ ObjectId("11111"), ObjectId("22222") ]
}
{
"_id" : ObjectId("bbbbb"),
"title" : "study list",
"contents" : [ ObjectId("33333"), ObjectId("44444") ]
}
{
"_id" : ObjectId("ccccc"),
"title" : "study list",
"contents" : [ ObjectId("55555") ]
}
{
"_id" : ObjectId("11111"),
"visibility" : true
}
{
"_id" : ObjectId("22222"),
"visibility" : true
}
{
"_id" : ObjectId("33333"),
"visibility" : true
}
{
"_id" : ObjectId("44444"),
"visibility" : false
}
{
"_id" : ObjectId("55555"),
"visibility" : false
}
“B”系列:
{
"_id" : ObjectId("aaaaa"),
"title" : "study list",
"contents" : [ ObjectId("11111"), ObjectId("22222") ]
}
{
"_id" : ObjectId("bbbbb"),
"title" : "study list",
"contents" : [ ObjectId("33333"), ObjectId("44444") ]
}
{
"_id" : ObjectId("ccccc"),
"title" : "study list",
"contents" : [ ObjectId("55555") ]
}
{
"_id" : ObjectId("11111"),
"visibility" : true
}
{
"_id" : ObjectId("22222"),
"visibility" : true
}
{
"_id" : ObjectId("33333"),
"visibility" : true
}
{
"_id" : ObjectId("44444"),
"visibility" : false
}
{
"_id" : ObjectId("55555"),
"visibility" : false
}
==数据结果
{
"_id" : ObjectId("aaaaa"),
"title" : "study list",
"contents" : [ ObjectId("11111"), ObjectId("22222") ]
}
如何获取所需数据?您可以使用下面的聚合
db.collectionA.aggregate([
{ "$lookup": {
"from": "collectionB",
"localField": "contents",
"foreignField": "_id",
"as": "data"
}},
{ "$match": {
"data": {
"$not": {
"$elemMatch": { "visibility": false }
}
}
}}
])
为什么输出是
\u id:ObjectId('aaa')
?ObjectId(“bbbbb”)
的内容也包含true
value对不起,我不会说英语,底线是我想要的内容文档中有一个数组,数组有一个ObjectId,ObjectId指的是另一个集合的Id(B)只有在引用的集合B的所有“可见性”都为true时才能获取。