如果字段数组和参数数组相交,则过滤 MongoDb 集合

Posted

技术标签:

【中文标题】如果字段数组和参数数组相交,则过滤 MongoDb 集合【英文标题】:Filter MongoDb collection if field array and argument array intersect 【发布时间】:2016-03-18 14:52:45 【问题描述】:

我正在创建一个 Meteor 学习项目。其中有一个集合,它的文档有一个名为 keywords 的属性,它是一个字符串数组。我有第二个字符串数组。我想以这种方式过滤集合,它只返回 keywords 数组与第二个数组相交的那些文档,即两个数组都有一个或几个相同的元素。有可能吗?

【问题讨论】:

【参考方案1】:

是的,查询是:

var searchKeywords = ['a','b','c','d']

MyCollection = new Mongo.Collection('mycollection');

MyCollection.insert(
  keywords: ['x','y','a','b']
);
// returns some ID

MyCollection.findOne(
  keywords:  $in: searchKeywords  
)._id
// returns the same ID

【讨论】:

非常感谢。真的行。只有 searchKeywords 不能放在花括号中,因为 $in 需要一个数组。 Aoff,是的,解决了这个问题!谢谢

以上是关于如果字段数组和参数数组相交,则过滤 MongoDb 集合的主要内容,如果未能解决你的问题,请参考以下文章

$eq 内部过滤器不适用于数组字段 - Mongodb

带有 C#Driver 的 MongoDB:如何过滤嵌套对象数组中的字段

如何匹配 MongoDB 中的子文档数组?

在 Mongoose/MongoDB 的文档中过滤数组、子文档、数组、文档

如何匹配MongoDB中的子文档数组?

MongoDB请求:仅从嵌入数组中的嵌入文档中过滤特定字段