首页 > 解决方案 > 如何在 mongodb 中找到任何子字段?

问题描述

所以我有一组看起来像这样的文档:

{
  "slug": {
    "fr-FR": "test-1",
    "nl-NL": "test-2",
    "en-US": "test-3"
  }
}

在我的应用程序中,我需要检查是否有任何文档使用了 slug(每个 slug 必须是全局唯一的,不仅在其语言环境中)。目前我需要做一个像这样的大请求:

.findOne({
  $or: [ 
    { "slug.fr-FR": "test-1" },
    { "slug.nl-NL": "test-1" },
    { "slug.en-US": "test-1" }
  ]
})

所以我想知道是否有任何解决方案可以使用通配符缩短此查询。

我希望这一切对你有意义!

谢谢

标签: mongodbmongodb-query

解决方案


使用 Javascript function() 您可以避免单独的匹配语句:

db.collection.find(function(){
    for ( var k in this.slug ) {
        if ( this.slug[k] == "test-1" )
            return true;
    }
})

推荐阅读