[{
"_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,val
為且
id
val
為1383800380
🎜即結果是:🎜[{
"_id" : ObjectId("55f181e43fdda0be857daaf4"),
"form_info" : [
{
"val" : "王思聪",
"id" : "1"
},
{
"val" : "13800138000",
"id" : "2"
}
],
"tags" : [],
"__v" : 0
}]
🎜該怎麼寫好? 謝謝大佬們🎜漂亮男人2017-04-28 09:06:07
能看一下你的這個記錄在資料庫中怎麼儲存的嗎?是這樣:
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
}
]
}
就好了
怪我咯2017-04-28 09:06:07
正在學習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'})