【发布时间】:2016-10-10 11:47:36
【问题描述】:
我有这个聚合查询来获取我的集合中没有空白(“”)值或空值的数据。这是我的查询:
MyCollectionA.aggregate([
{$lookup: { "from" : "MyCollectionB","localField" : "MyCollectionAId", "foreignField" : "_id", "as" : "myData"}},
{$match: {"myData": {$nin: [null, "", " "]}}},
{$group: {'_id': '$MyCollectionAId'}}]);
这个更新的查询解决了我的问题。
MyCollectionA 数据:
{
"_id" : "AbqMZXWt4kwFbJM8Y",
"MyCollectionBId" : "DEW7QiEA5wbaFkKkJ",
"MyCollectionAName" : "asdfasdf"
}
{
"_id" : "Ac2CJbz6o4xKQETAZ",
"MyCollectionBId" : "5JjzxkxfBsNXsWcrz",
"MyCollectionAName" : "asdfasdfads."
}
{
"_id" : "AcE2WDqbRG9dv3Lsc",
"MyCollectionBId" : "5678179e20a3d410709ba7f4",
"MyCollectionAName" : "asfasfdasdf"
}
{
"_id" : "AcXsSNc6jmmDyEF54",
"MyCollectionBId" : "2Cy9TpzeqwkTibLy9",
"MyCollectionAName" : "asdfasdfadsr"
}
MyCollectionB 数据:
{
"_id" : "5JjzxkxfBsNXsWcrz",
"myField" : " "
}
{
"_id" : "5678179e20a3d410709ba7f4",
"myField" : null
}
{
"_id" : "2Cy9TpzeqwkTibLy9",
"myField" : "asdf"
}
但是这个查询给我输出的数据有空白和空值。
预期结果是:
{
"_id" : "2Cy9TpzeqwkTibLy9",
"MyCollectionBId" : "5JjzxkxfBsNXsWcrz",
"myField" : "asdf"
}
谁能知道这个?
【问题讨论】:
-
{$match: {"myData.0": {$exists: true}}}怎么样? -
MyCollectionA中没有键为myField的字段,如$lookup运算符的"localField" : "myField"选项中所指定。也许您的意思是"localField" : "MyCollectionAId"?另外,您能否显示使用上述聚合的预期输出? -
@chridam "myField" 来自 MyCollectionB。
-
如果它来自
MyCollectionB,为什么在$lookup运算符参数中将它指定为MyCollectionA的localField? -
@chridam 因为我想找到“myField”不应该有银行或空数据的数据。
标签: mongodb mongodb-query aggregation-framework mongodb-aggregation