検索

ホームページ  >  に質問  >  本文

数据库 - Mongodb多层嵌套数组如何精确查询?

{
    "excelID": "10001",
    "excelName": "一年级学生信息",
    "sheetArrays": [
        {
            "sheetName": "一班",
            "studentInfos": [
                {
                    "name": "张三",
                    "sex": "男"
                },
                {
                    "name": "李四",
                    "sex": "男"
                }
            ]
        },
        {
            "sheetName": "二班",
            "studentInfos": [
                {
                    "name": "王五",
                    "sex": "男"
                },
                {
                    "name": "赵六",
                    "sex": "女"
                }
            ]
        }
    ]
}

我希望通过一条语句查出所有sex为男的人员的名称;

我还希望能通过一条语句查出name为王五对应的班级和他的基本信息,求朋友们为我答疑解惑,感激不尽。

漂亮男人漂亮男人2792日前1029

全員に返信(1)返信します

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-02 09:23:41

    文章の概念とは何ですか? aggregationは発言としてカウントされますか?

    リーリー

    それは可能ですが、実際にはそのようなデータ構造は合理的ではありません。
    MongoDB モデルの設計は大きなトピックです。興味がある場合は、このドキュメントのデータ モデリングの章を注意深く読んでください。
    基本的な原則は、実際には、関係のパラダイムを満たすよりもはるかに厄介です。何をすべきかを指示するガイドラインはありません。ただし、基本的に、選択するデータ モデルは、使用方法、更新方法、挿入方法、クエリ方法などのさまざまなシナリオを考慮する必要があります。使用シナリオを十分に満たすことができるモデルが優れたモデルです。
    モデルに戻って問題がないか確認してください:

    1. ドキュメントレベルのロックを例に挙げます。つまり、これらの操作はすべて相互に排他的であると考えられます。違いです。

    2. 上記のクエリもご覧になったと思いますが、これはエレガントでも効率的でもありません。更新どころか、考えるだけでも面倒です。
      つまり、これは良いモデルではありません。 MongoDB はアンチパラダイムを提唱していますが、アンチパラダイムのためのアンチパラダイムであるほど極端であってはなりません。より使いやすい別のモデルを試してください。

    返事
    0
  • キャンセル返事