Heim > Datenbank > MySQL-Tutorial > mongodb查询内嵌文档

mongodb查询内嵌文档

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-07 14:58:45
Original
1303 Leute haben es durchsucht

mongodb查询内嵌文档 假设有这样一个文档: db.XXX.remove(); db.XXX.insert({id:1, members:[{name:BuleRiver1, age:27, gender:M}, {name:BuleRiver2, age:23, gender:F}, {name:BuleRiver3, age:21, gender:M}]}); 不能使用db.XXX.find({members:{name:Bu

mongodb查询内嵌文档

 

假设有这样一个文档:

db.XXX.remove();

db.XXX.insert({"id":1, "members":[{"name":"BuleRiver1", "age":27, "gender":"M"}, {"name":"BuleRiver2", "age":23, "gender":"F"}, {"name":"BuleRiver3", "age":21, "gender":"M"}]});

不能使用db.XXX.find({"members":{"name":"BuleRiver1"}});进行查询,查询的结果是空集。只有完全匹配一个的时候才能获取到结果,因此:

db.XXX.find({"members":{"name":"BuleRiver1", "age":27, "gender":"M"}});

 

可以得到结果。

如果把键值进行颠倒,也得不到结果:

db.XXX.find({"members":{"age":27, "name":"BuleRiver1", "gender":"M"}});

 

得到的结果是空集

我们这样查询:

db.XXX.find({"members.name":"BuleRiver1"});

是可以查询出结果的。

如果需要两个属性:

db.XXX.find({"members.name":"BuleRiver1", "members.age":27});

也可以查询出结果。

我们再进行破坏性尝试:

db.XXX.find({"members.name":"BuleRiver1", "members.age":23});

也可以查询出结果。

 

不过我们应该注意到:BuleRiver1是数组中第一个元素的键值,而23是数组中第二个元素的键值,这样也可以查询出结果。

 

对于我们的一些应用来说,这显然不是我们想要的结果。所以我们应该使用$elemMatch:

db.XXX.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":27}}});

可以查询出结果,而

db.XXX.find({"members":{"$elemMatch":{"name":"BuleRiver1", "age":23}}});

查询不出结果。因此,这正是我们想要的。

Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Parameterverständnis von Mongodb
Aus 1970-01-01 08:00:00
0
0
0
Verwendung von Symfony2 Mongodb
Aus 1970-01-01 08:00:00
0
0
0
mongodb _id umbenennen
Aus 1970-01-01 08:00:00
0
0
0
MongoDB schließt Verbindung – Stapelüberlauf
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage