【问题标题】:Mongoose : search in an arrayMongoose:在数组中搜索
【发布时间】:2015-07-23 16:47:42
【问题描述】:

我有这个架构:

new mongoose.Schema({
    providers : [{
            provider: { type: String, required: true },
            data : { type : String, unique: true }
        }]
});

例如,一个项目可以是:

providers: [{provider: "linkedin", data: "abcd"},
            {provider: "twitter", data: "efgh"}]

我想在 Mongoose 中搜索的内容:provider == "linkedin" 和 data = "abcd"。

你知道如何实现吗?

【问题讨论】:

    标签: node.js mongodb mongoose database


    【解决方案1】:

    使用$elemMatch匹配相同元素中的多个字段:

    Model.find({providers: {$elemMatch: {provider: 'linkedin', data: 'abcd'}}})
    

    以下内容也可以,但更脆弱,因为它需要元素的精确匹配,没有额外的字段并且两个字段的顺序相同。

    Model.find({providers: {provider: 'linkedin', data: 'abcd'}})
    

    【讨论】:

    • 这里用$elemMatch代替db.w.find({providers:{provider:"linkedin", data:"abcd"}})有什么好处?
    • @SylvainLeroux 这会起作用,但更脆弱,因为它需要元素的 exact 匹配,没有额外的字段并且两个字段的顺序相同。
    • 感谢您澄清这一点。我现在正在查看the doc,只是注意到我已经忘记了这些限制。也许值得在你的回答中提到这一点?
    猜你喜欢
    • 2017-05-21
    • 2022-12-12
    • 1970-01-01
    • 2022-07-22
    • 2020-07-15
    • 2020-11-03
    • 1970-01-01
    • 2016-05-31
    • 2020-10-29
    相关资源
    最近更新 更多