MongoDB - 通过数组中多个对象的相同字段查询文档

标签 mongodb database nosql

我有一个看起来像这样的文档:

{
  "_id" : "AouRpb5g2WR9sZe5z",
  "participants" : [ 
    {
        "user" : "CYvApwRFADveqBqEY",
        "unread" : false
    }, 
    {
        "user" : "sgoinZkaHbqth8nPr",
        "unread" : false
    }
   ],
 "createdAt" : ISODate("2016-07-23T04:06:53.748Z")
}

我需要能够找到同时包含用户 'CYvApwRFADveqBqEY''sgoinZkaHbqth8nPr' 的文档。我能够使用 elemMatch 找到其中一位用户的所有文档,但无法同时找出这两个用户,或者这是否是正确的方法。

最佳答案

使用带有 $allfind 查询,你可以这样做:

db.device.find({
  "participants.user": {
    $all: ["CYvApwRFADveqBqEY", "sgoinZkaHbqth8nPr"]
  }
});

来自 $all 的文档:

The $all operator selects the documents where the value of a field is an >array that contains all the specified elements.

关于MongoDB - 通过数组中多个对象的相同字段查询文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38545466/

相关文章:

mongodb - 哪个数据库最好保存分层数据(树)

sql - 帮助在 SQL/NoSQL 混合(Sql 服务器/RavenDB)中对 EAV 进行建模

mongodb - 如何在 pcf-dev(pivotal cloud foundry dev)中使用 postgres 或 mongodb 数据库?

python - Mongodb FindAndModify 多进程使用问题

java - 无法通过 MongoDB 连接器使用 Spark SQL 查询 MongoDB

database - Mongoose 关系

database - 使用 GoLang 在 Postgres 中使用 json 类型字段创建表

php - 在mysql顶部使用 'like'显示查询的搜索记录

java - 具有复合键的重复主键,DynamoDB

MongoDB : find value in Array with multiple criteria