嗨,我对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/

10-14 02:46