MongoDB,如何将没有可匹配元素的元素检索到数组中?

Posted

技术标签:

【中文标题】MongoDB,如何将没有可匹配元素的元素检索到数组中?【英文标题】:MongoDB, how to retrieve elements which has not a matchable element into an Array? 【发布时间】:2016-06-29 21:34:07 【问题描述】:

我有这种元素:

  "_id" : 1,
  "docs" : [
     "key": "blah", "count": 2,
     "key": "wow", "count": 10
  ]
,
  "_id" : 2,
  "docs" : [
     "key": "blah", "count": 11

我想检索未定义 docs.key == "wow" 的元素。在这种情况下,元素"_id": 2

这个查询我得到相反的结果:

db.getCollection('myCollection').find(
  
    "docs.key": "wow"
  
);

我尝试了$existsaggregate 的组合,但没有找到合适的解决方案。

【问题讨论】:

相关但不相同:***.com/q/5719408/316700, ***.com/q/16221599/316700 因为在我的示例中,我正在寻找一个复杂元素到一个数组中。 【参考方案1】:

你试过$ne操作符

db.getCollection('myCollection').find(
  
    "docs.key": $ne : "wow"
  
);

【讨论】:

Error: count failed: "ok" : 0, "errmsg" : "$not needs a regex or a document", "code" : 2 【参考方案2】:

你可以这样做:

db.getCollection('myCollection').find(
    "docs.key": $ne: "wow"
);

【讨论】:

以上是关于MongoDB,如何将没有可匹配元素的元素检索到数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MongoDB 数组中检索第一个和最后一个元素并将其设置为不同的字段?

如何改进 Python 中列表的模式匹配

如何计算另一个数组 MongoDB 中数组中的匹配元素

如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素

如何从 MongoDB 集合中获取具有匹配键的最后 N 个元素

如何使用Spring Data可伸缩地将元素插入MongoDB中的集合字段?