【问题标题】:How to Get Data using Mongoose when Multilingual is stored in collections当多语言存储在集合中时如何使用 Mongoose 获取数据
【发布时间】:2020-07-15 02:15:29
【问题描述】:

我已将数据保存在 mongo db 中

{
     "title": {
                "ar": "arabic name",
                "en": "english name"

            },
     "description": {
                "ar": "ar-description",
                "en": "arabic description"
            },
     "subCategories": [{ 
               "title": {
                    "ar": "arabic name",
                    "en": "english name"
            }],
 }

预期输出

    {
     "title": "arabic name",
     "description": "arabic description",
     "subCategories": [{"title": "arabic name"}],
    }

如何根据语言(en,ar)查询猫鼬以给出此结果。我正在使用猫鼬、nodejs 和 express。 如果不能使用猫鼬,那么还有其他解决方案吗? 谢谢你:)

【问题讨论】:

  • 与其像这样保存数据,不如将数据格式化为更简单的格式。将数据作为一个整体分为 en 和 arabic。类似:{ 'en': [{'title':'english name' ,...}, {..}] ,'arabic': [{'title':'arabic name' ,...}, {..}] }
  • @ShoyebMemon 那么如果我按照你的方法保存数据,我该如何查询获取数据?

标签: javascript node.js mongodb mongoose


【解决方案1】:

最好的办法是存储一个unwinded 文档

{
 "title": {
            "ar": "arabic name",
            "en": "english name"

        },
 "description": {
            "ar": "ar-description",
            "en": "arabic description"
        },
 "subCategories": [{ 
           "title": {
                "ar": "arabic name",
                "en": "english name"
        }],
 }

会变成

// ar doc
{
 "lang": "ar",
 "title": "Arabic name",
 "description": "ar-description",
 "subCategories": [{ 
           "title": "arabic name"
        }],
 }
 // en doc
 {
 "lang": "en",
 "title": "English name",
 "description": "en-description",
 "subCategories": [{ 
           "title": "english name"
        }],
 }

为了找到一个ar doc

Model.find({lang:'ar'})

会给你预期的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多