嗨,我对Mongo / Mongoose查询有些犹豫,我需要帮助。
我有一个称为Friends的对象数组(例如,创建了伪数据):
朋友:
[
{username: "Anders", age: 10},
{username: "Bella", age: 21},
{username: "Debbie", age: 22}
]
我在Mongo中还有一个要查询的表,称为people:
人:
[
{username: "Anders", age: 10},
{username: "Andrew", age: 20},
{username: "Annmarie", age: 28},
{username: "Bella", age: 21},
{username: "Carl", age: 40},
{username: "Debbie", age: 22}
]
我的问题是我想从用户名以“ An”开头的人中检索所有文档,但不包括出现在friends数组中的文档。我不想使用用户名以“ An”开头的所有文档进行搜索,然后再过滤掉,因为我的数据库很大。
最佳答案
您可以将$nor
运算符应用于您的朋友列表,以确保所有朋友都从结果中排除。另一部分是简单的$regex
运算符,用于匹配以“ An”开头的名称:
var friends = [
{username: "Anders", age: 10},
{username: "Bella", age: 21},
{username: "Debbie", age: 22}
];
var query = { "$nor": friends, "username": { "$regex": "^An" } };
您在此处最有效的索引显然是在“用户名”和“年龄”上,并且请注意,在此处锚定“ regex”是唯一对您有效的方法。
关于javascript - 如何按模式查找但排除条件列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25829524/