Node.js 用于获取包含与列表中任何字符串匹配的字符串数组的所有结果的Mongoose查询

Node.js 用于获取包含与列表中任何字符串匹配的字符串数组的所有结果的Mongoose查询,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,假设我在Mongoose中的一个对象中有一个数组。例如,帐户有许多别名: 别名:[a、b、c、d] 现在,假设我想查找所有别名为a或c的帐户 在mongoose/mongodb中,您将如何做到这一点?我知道您可以使用$regex查找具有a或c之一的帐户,但如何对任意匹配列表执行此操作?您可以使用运算符 我用c驱动程序写linq IMongoQuery mongoQuery = Query<YourEntity>.Where(a => a.Aliases.Contains(

假设我在Mongoose中的一个对象中有一个数组。例如,帐户有许多别名:

别名:[a、b、c、d]

现在,假设我想查找所有别名为a或c的帐户

在mongoose/mongodb中,您将如何做到这一点?我知道您可以使用$regex查找具有a或c之一的帐户,但如何对任意匹配列表执行此操作?

您可以使用运算符


我用c驱动程序写linq

   IMongoQuery mongoQuery = Query<YourEntity>.Where(a => a.Aliases.Contains("a") || a.Aliases.Contains("c"));

        var str1 = mongoQuery.ToString(); 
这是司机翻译的


{$or:[{别名:a},{别名:c}]}

OP没有使用c,他特别说Mongoshell或Mongoose{$or:[{别名:a},{别名:c}]}是bsonquery@DavidGrinberg c官方驱动程序由10gen提供,可以让您编写linq,并且驱动程序可以将linq转换为bson查询。通常,它表示通过bson查询语句进行查询的最佳方式。它可以用在mongoVUE和mongooseThats fine和dandy中,但OP仍然没有要求c解决方案。此外,$in运算符更简单。如果我这样做,那么它只在别名引用一个名称而不是一个名称列表时才起作用。@user3736336哦,那么您希望别名数组包含a和c?不是a和c,而是包含a或c的名称。@user3736336这正是此查询所做的-'a'或'c'。查阅文件:
   IMongoQuery mongoQuery = Query<YourEntity>.Where(a => a.Aliases.Contains("a") || a.Aliases.Contains("c"));

        var str1 = mongoQuery.ToString();