cari

Rumah  >  Soal Jawab  >  teks badan

如何用Mongodb复杂条件查询数组内成员?

[{
    "_id" : ObjectId("55f181e43fdda0be857daaf4"),
    "form_info" : [ 
        {
            "val" : "王思聪",
            "id" : "1"
        }, 
        {
            "val" : "13800138000",
            "id" : "2"
        }
    ],
    "tags" : [],
    "__v" : 0
},
{
    "_id" : ObjectId("55f181e43fdda0f48578acf4"),
    "form_info" : [ 
        {
            "val" : "李丽珍",
            "id" : "1"
        }, 
        {
            "val" : "13934438010",
            "id" : "2"
        }
    ],
    "tags" : [],
    "__v" : 0
}]

如果我想筛选form_info数组内符合 成员对象内id为1,val王思聪id为2,val13800138000 的记录。

即结果是:

[{
    "_id" : ObjectId("55f181e43fdda0be857daaf4"),
    "form_info" : [ 
        {
            "val" : "王思聪",
            "id" : "1"
        }, 
        {
            "val" : "13800138000",
            "id" : "2"
        }
    ],
    "tags" : [],
    "__v" : 0
}]

该怎么写好? 谢谢大大们

PHPzPHPz2818 hari yang lalu686

membalas semua(2)saya akan balas

  • 漂亮男人

    漂亮男人2017-04-28 09:06:07

    Bolehkah anda melihat bagaimana rekod anda disimpan dalam pangkalan data? Ini dia:

    db.test6.insert(
    {"test":[{
        "_id" : ObjectId("55f181e43fdda0be857daaf4"),
        "form_info" : [ 
            {
                "val" : "王思聪",
                "id" : "1"
            }, 
            {
                "val" : "13800138000",
                "id" : "2"
            }
        ],
        "tags" : [],
        "__v" : 0
    },
    {
        "_id" : ObjectId("55f181e43fdda0f48578acf4"),
        "form_info" : [ 
            {
                "val" : "李丽珍",
                "id" : "1"
            }, 
            {
                "val" : "13934438010",
                "id" : "2"
            }
        ],
        "tags" : [],
        "__v" : 0
    }]})

    Atau adakah setiap subdokumen dalam tatasusunan rekod bebas? Jika ia seperti yang anda tunjukkan di atas, maka jika anda hanya menyemak _id terus, anda akan mendapat satu-satunya rekod. Jika mengikut pemahaman saya, maka laksanakan pertanyaan ini:

    > db.test6.find({"test._id":ObjectId("55f181e43fdda0be857daaf4")},{"test.$":1}).pretty();
    {
        "_id" : ObjectId("55f255aef566c6baf2af1fac"),
        "test" : [
            {
                "_id" : ObjectId("55f181e43fdda0be857daaf4"),
                "form_info" : [
                    {
                        "val" : "王思聪",
                        "id" : "1"
                    },
                    {
                        "val" : "13800138000",
                        "id" : "2"
                    }
                ],
                "tags" : [ ],
                "__v" : 0
            }
        ]
    }

    Itu bagus

    balas
    0
  • 怪我咯

    怪我咯2017-04-28 09:06:07

    Saya sedang belajar mongodb dan cuba menjawab beberapa soalan mengenai sf.

    Ini ialah pertanyaan untuk tatasusunan terbenam mongodb Jika indeks diketahui, anda boleh menggunakan pertanyaan indeks berangka.

    Gunakan indeks tatasusunan untuk memadankan medan dokumen terbenam

    Jadi pertanyaan boleh ditulis seperti ini:

    db.user.find({'form_info.0.id': '1', 'form_info.0.val': '王思聪', 'form_info.1.id': '2', 'form_info.1.val': '13800138000'})

    balas
    0
  • Batalbalas