我正在使用 mongoose.js 对 mongodb 进行查询,但我认为我的问题并非特定于 mongoose.js。
假设我在收藏中只有一条记录:
var album = new Album({
tracks: [{
title: 'track0',
language: 'en',
},{
title: 'track1',
language: 'en',
},{
title: 'track2',
language: 'es',
}]
})
我想选择语言字段等于“en”的所有曲目,所以我尝试了两种变体:
Album.find({'tracks.language':'en'}, {'tracks.$': 1}, function(err, albums){
并与 $elemMatch 投影绑定到同一件事:
Album.find({}, {tracks: {$elemMatch: {'language': 'en'}}}, function(err, albums){
在任何一种情况下,我都会得到相同的结果:
{tracks:[{title: 'track0', language: 'en'}]}
选定的专辑曲目仅包含一个标题为“track0”的曲目元素(但应该同时存在“track0”和“track1”):
{tracks:[{title: 'track0', language: 'en'}, {title: 'track1', language: 'en'}]}
我究竟做错了什么?