如何用Mongodb複雜條件查詢數組內成員?
PHPz
PHPz 2017-04-28 09:04:07
0
2
614
[{
    "_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,valid

為2,

val

1383800380

🎜即結果是:🎜
[{
    "_id" : ObjectId("55f181e43fdda0be857daaf4"),
    "form_info" : [ 
        {
            "val" : "王思聪",
            "id" : "1"
        }, 
        {
            "val" : "13800138000",
            "id" : "2"
        }
    ],
    "tags" : [],
    "__v" : 0
}]
🎜該怎麼寫好? 謝謝大佬們🎜
PHPz
PHPz

学习是最好的投资!

全部回覆(2)
漂亮男人

能看一下你的這個記錄在資料庫中怎麼儲存的嗎?是這樣:

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
}]})

還是數組裡面的每個子文檔都是一個獨立的記錄?真要是按你上邊展示的這樣,那你直接查_id不就取出唯一的記錄了。如果照我的理解,那執行這個查詢:

> 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
        }
    ]
}

就好了

刘奇

正在學習mongodb,試著回答下sf上的一些問題。

這個是mongodb內嵌數組的查詢,在已知索引的情況下可以使用數字索引查詢。

使用陣列索引來匹配內嵌文件的欄位

因此查詢可以這樣寫:

db.user.find({'form_info.0.id': '1', 'form_info.0.val': '王思聪', 'form_info.1.id': '2', 'form_info.1.val': '13800138000'})
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!