我正在尝试使用一些集合创建一个MongoDB数据库。在以下意义上,这些集合与彼此之间具有一对多的关系:
根据结构,我有一个非常基本的结构
Everything是一个自动递增的客户端整数。 我可以轻松地检查客户端是否有{A}的 _id 匹配{B}的 Aid ,但我很好奇我是否可以使用$ lookup和在服务器端也是$。为此,性能不会非常重要,因为{C}的数量可能不会超过100k。
然而,存在一个对象{D},它将在其生命周期内插入大量对象(例如,每年几十亿),所以如果$ lookup可能但性能方面不可行,我可以和{D}客户端验证一起生活。
问题:
我有{B}的以下查询失败:
db.createCollection("B", {
validator: { $and :
[
{ $jsonSchema: {
bsonType: "object",
required: ["_id", "Aid"],
properties: {
_id: {
bsonType: "long",
description: "Bid must be a number and is required!"
},
Aid: {
bsonType: "long",
description: "Aid must be a number and is required!"
}
}
} },
{
Aid: {
$in : [
{ $lookup : {
from : "A",
localField : "Aid",
foreignField : "_id",
as : "A_IDs"
} }
]
}
}
]
}
});
给出错误:
{
"ok" : 0,
"errmsg" : "cannot nest $ under $in",
"code" : 2,
"codeName" : "BadValue"
}
我了解上述查询失败,因为$in
无法与上述$lookup
一起使用。但是,我要问的是,想法是否可行,如果是,那么如何。