是否可以根据文档是否包含一组对象来匹配文档?

Posted

技术标签:

【中文标题】是否可以根据文档是否包含一组对象来匹配文档?【英文标题】:Is it possible to match a document based on whether a document contains a set of objects? 【发布时间】:2016-08-19 13:16:21 【问题描述】:

假设我有一个包含对象数组的根文档。 是否可以返回包含一组对象的文档?

例如:

文档 1


   "name": "someName"
   "date": "someDate"
   "anArray" : [
         "key1": "value1", "key2":"value2",
         "key1": "value3", "key2":"value4"...]

文档 2


   "name": "someOtherName"
   "date": "someOtherDate"
   "anArray" : [
         "key1": "value1", "key2":"value2", 
         "key1": "value4", "key2":"value3"...]

我想要一个匹配并返回 Doc1 的查询: 在 anArray 中包含 key1 = value1 && key 2=value2 对象的文档,并且在 anArray 中也有 key1=value3 和 key2= value4 的对象

这可能吗?

【问题讨论】:

如果没有,除了做客户端连接和过滤器之外,是否有关于如何处理这些类型的用例的任何建议。是否可以通过管道过滤器来解决这个问题?例如:首先检索一个包含 Object Key1 & key2 values 为 value 1 & value 2 的文档列表。然后从结果中过滤掉 Objects with Key1 & Key 2 = value3 & value 4 这也不是嵌套对象查询。我不是要匹配 1。我要匹配多个。类似于:NEST1(match Key1,Key2,Value1,Value2) && NEST2(match key1,Key2,Value3,Value4) 如果您尝试匹配数组中的多个对象,那么您必须为该数组使用nested 数据类型。 我明白了,所以唯一的可能是这样做:即嵌套过滤器 1 -> 匹配“key1”、“value1”&&“key2”、“value2”。跟随嵌套过滤器 2 -> 匹配 "key1","value3", &&"key2","value4" 酷,很高兴它有帮助! 【参考方案1】:

在外部查询上组合多个嵌套过滤器来实现这一点 - 正如 Val 所建议的那样。

【讨论】:

以上是关于是否可以根据文档是否包含一组对象来匹配文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据现有的 mongoose 查询检查单个文档?

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

如何根据数组是不是包含pymongo中的特定元素来更新所有文档?

使用Lucene Query测试文档是否匹配

是否可以根据对象大小删除 AWS S3 对象

如何根据一组列名获取数据库对象列表?