数据的格式是这样的:
{
"_id" : 1,
"people_id" : 1,
"albums" : [
{
"id" : 1,
"name" : "123",
"privilege" : 0,
},
{
"id" : 2,
"name" : "Q",
"privilege" : 5,
},
{
"id" : 3,
"name" : "Q",
"privilege" : 5,
},
]
}
{
"_id" : 2,
"people_id" : 2,
"albums" : [
{
"id" : 1,
"name" : "4",
"privilege" : 0,
},
{
"id" : 2,
"name" : "5",
"privilege" : 0,
}
]
}
现在我想的是
1 , 查询people_id 为 1 且 privilege 为 5的内嵌文档,mongodb的查询命令怎么写的啊
2,更新people_id 为 2 且权限为 id为2的内嵌文档的name字段值为 6,更新命令怎么写的啊
查询我用
db.find({"people_id" : 1,"albums":{"$elemMatch" : {"privilege" : 5}}})
来尝试匹配过,但是匹配出了:
{
"_id" : 1,
"people_id" : 1,
"albums" : [
{
"id" : 1,
"name" : "123",
"privilege" : 0,
},
{
"id" : 2,
"name" : "Q",
"privilege" : 5,
},
{
"id" : 3,
"name" : "Q",
"privilege" : 5,
},
]
}
我并不想要id为1的那个,只想唯一匹配id为2和3那个
修改,我确实不会,
还请大家帮忙提下解决方法,非常谢谢咯!
Pernyataan pertanyaan boleh dipermudahkan seperti berikut:
Hasil pertanyaan mengembalikan dokumen yang memenuhi syarat yang sepadan Walaupun medan yang dikembalikan boleh dipetakan, ia tidak boleh hanya mengembalikan dokumen yang anda nyatakan
id为2和3
. Tetapi sekarang setelah anda memperoleh dokumen json yang memenuhi syarat, anda boleh menulis program untuk mendapatkan subdokumen terbenam yang dikehendaki.Kenyataan kemas kini adalah seperti berikut:
Ia hanya mengemas kini subdokumen pertama yang sepadan dalam tatasusunan, tetapi
albums.id
nampaknya unik dan harus memenuhi keperluan anda.Ada penyelesaian untuk #1. $elemMatch juga boleh digunakan dalam parameter kedua kaedah cari untuk mengehadkan elemen dalam tatasusunan yang dikembalikan. Seperti berikut:
Adakah ID subdokumen anda meningkat secara automatik?