我正在尝试使用带有$ lookup阶段的聚合构建一个新的mongodb视图,该阶段连接到我构建的mongodb视图。
以下是我的视图中名为myPreferencesView的结果输出示例:
{
"_id" : ObjectId("58c3127b30abaf0d1ae38235"),
"name" : "Preference 1",
"pointValue" : NumberInt(12),
"description" : "This is the desc for preference #1"
},
{
"_id" : ObjectId("58c3127b30abaf0d1ae38234"),
"name" : "Preference 2",
"pointValue" : NumberInt(10),
"description" : "This is the desc for preference #2"
}
这是我尝试的$ lookup语法:
$lookup:
{
from: "myPreferencesView (on: myPreferenceCollection)",
localField: "preference",
foreignField: "_id",
as: "pref"
}
我得到的结果如下:
{
"_id" : ObjectId("58c3127b30abaf0d1ae3822f"),
"preference" : ObjectId("58c3127b30abaf0d1ae38232"),
"pref" : [
]
}
我得到一个空的pref数组。我首先想知道,聚合或视图可以在mongodb视图上执行$ lookup。
其次,需要特殊的语法吗?
我已尝试对上面列出的查找语法进行一些不同的调整。大多数这些尝试显然是错误的,因为它们没有产生可行的结果。上面的语法似乎“不会中断”,但它也不会产生所需的输出。
事实证明,原始问题中发布的语法很好,它确实有效。我遇到的问题是我在$ lookup阶段指定的“子视图”名称有一个外壳问题。