Tôi đang sử dụng mongoose.js để thực hiện truy vấn đến mongodb, nhưng tôi nghĩ rằng sự cố của tôi không cụ thể đối với mongoose.js.MongoDB: chọn các phần tử phù hợp của phần phụ
Nói rằng tôi chỉ có một kỷ lục trong bộ sưu tập:
var album = new Album({
tracks: [{
title: 'track0',
language: 'en',
},{
title: 'track1',
language: 'en',
},{
title: 'track2',
language: 'es',
}]
})
Tôi muốn chọn tất cả các bài hát với lĩnh vực ngôn ngữ bằng 'en', vì vậy tôi cố gắng hai biến thể:
Album.find({'tracks.language':'en'}, {'tracks.$': 1}, function(err, albums){
và gắn với cùng một điều với phép chiếu $ elemMatch:
Album.find({}, {tracks: {$elemMatch: {'language': 'en'}}}, function(err, albums){
trong cả hai trường hợp, tôi có cùng kết quả:
{tracks:[{title: 'track0', language: 'en'}]}
album.tracks chọn chỉ chứa ONE yếu tố theo dõi với tiêu đề 'track0' (nhưng không nên có cả hai 'track0', 'track1'):
{tracks:[{title: 'track0', language: 'en'}, {title: 'track1', language: 'en'}]}
Tôi đang làm gì sai?
Bạn sẽ không làm bất cứ điều gì sai, đó chỉ là cách những truy vấn làm việc - họ chỉ bao gồm các yếu tố phù hợp đầu tiên. Tôi nghĩ bạn sẽ cần phải sử dụng khung tổng hợp để làm những gì bạn muốn. – JohnnyHK
Cảm ơn, bạn có thể đưa ra mẹo cụ thể hơn của tôi không? – WHITECOLOR