【问题标题】:Mongoose/MongoDB find Document with array of objects by multiple valuesMongoose/MongoDB 通过多个值查找包含对象数组的文档
【发布时间】:2020-06-07 23:16:22
【问题描述】:

我的文档结构如下:

recipients: [
    {
        name: String,
        hidden: Boolean,
    },
    {
        name: String,
        hidden: Boolean,
    },
    // more ...
];

我想在同一对象中查询给定name 和给定hidden 值的所有文档,这意味着在收件人数组的同一索引处。例如,如何查询“name = test 和 hidden = false 的所有文档”(其中 hidden 与名称位于同一对象中)?我尝试了以下

const chats = await Model.find(
            {
                'recipients.name': name,
                'recipients.hidden': false,
            },

但这仍然返回文档,因为它似乎没有对同一个对象使用这两个条件,而是对数组中的所有对象使用。

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

    没关系,明白了。请参阅 $elemMatch (https://docs.mongodb.com/manual/reference/operator/query/elemMatch/#array-of-embedded-documents) 的 MongoDB 文档

    { 
        "recipients": {
            "$elemMatch": {
                "name": name,
                "hidden": false 
            }, 
        }, 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      相关资源
      最近更新 更多