[MONGODB] MongoDB를, 몽구스 어떻게 발견 문서의 하위 문서를 찾는 방법은?
MONGODBMongoDB를, 몽구스 어떻게 발견 문서의 하위 문서를 찾는 방법은?
내가 찾은 문서의 _id에 의해 하위 문서를 얻으려고 노력에 붙어있어.
예 스키마
var User = mongoose.Schema({
name: String,
photos: [{src: String, title: String}]
});
var Team = db.model('Team', Team);
지금은 하나의 사용자를 받고 있어요 :
myUser = User.findOne(...)...
어떻게 그것의 _id (또는 제목)에 의해 지금 SRC 자신의 사진받을 수 있나요?
뭔가 같은 :
myUser.photos.findOne({'_id': myId})
해결법
-
==============================
1.당신은 필요 하나 임베디드 문서에 새 스키마를 만들거나 혼합 유형으로 몽구스 해석 때문에 빈 배열로 유형 선언을 둡니다.
당신은 필요 하나 임베디드 문서에 새 스키마를 만들거나 혼합 유형으로 몽구스 해석 때문에 빈 배열로 유형 선언을 둡니다.
var userSchema = new mongoose.Schema({ name: String, photos: [] }); var User = mongoose.model('User', userSchema);
var userSchema = new mongoose.Schema({ name: String, photos: [photoSchema] }); var photoSchema = new mongoose.Schema({ src: String, title: String }); var User = mongoose.model('User', userSchema);
그리고 당신은 thusly 히 절약 할 수 있습니다 :
var user = new User({ name: 'Bob', photos: [ { src: '/path/to/photo.png' }, { src: '/path/to/other/photo.png' } ] }); user.save();
여기에서, 당신은 단순히 포함 된 문서를 찾기 위해 배열 프리미티브를 사용할 수 있습니다 :
User.findOne({name: 'Bob'}, function (err, user) { var photo = user.photos.filter(function (photo) { return photo.title === 'My awesome photo'; }).pop(); console.log(photo); //logs { src: '/path/to/photo.png', title: 'My awesome photo' } });
당신은 ID로 조회 포함 된 문서에 특별한 ID () 메소드를 사용할 수 있습니다 :
User.findOne({name: 'Bob'}, function (err, user) { user.photos.id(photo._id); });
당신은 더 여기 읽을 수 있습니다 : http://mongoosejs.com/docs/subdocs.html
그렇지 않으면 새로운 컬렉션을 만들 것입니다, 당신이 몽구스와 스키마를 등록하지 마십시오합니다. 또한 하위 문서를 자주 검색하는 경우, 다음과 같이 심판과 인구를 사용하는 것이 좋은 아이디어가 될 것이라는 점을 명심하십시오. 그것 훨씬 빠르게 인덱싱 때문에, 두 번 DB 안타에도 불구하고. 또한, 몽구스는 (즉, 아이들은 물론 아이들의 문서를) 두 번 중첩 문서에 봉크합니다
var user = mongoose.Schema({ name: String, photos: [{ type: Schema.Types.ObjectId, ref: 'Photo' }] }); var photo = mongoose.Schema({ src: String, title: String }); User .findOne({ name: 'foo' }) .populate('photos') .exec(function (err, user) { console.log(user.photos[0].src); });
관련 문서는 여기 http://mongoosejs.com/docs/populate.html 찾을 수 있습니다
-
==============================
2.내 제한된 경험에서, srquinn의 대답에 추가 나는 채우기 함께 다른 그룹에서 문서를 결합하기위한 알았는데?
내 제한된 경험에서, srquinn의 대답에 추가 나는 채우기 함께 다른 그룹에서 문서를 결합하기위한 알았는데?
난 그냥 User.findOne 할 수 여기에 생각 ({이름을 'foo는'}, '사진')에 대한 속기입니다 :
const query = User.findOne({ name: 'foo' }) query.select('photos')
from https://stackoverflow.com/questions/21142524/mongodb-mongoose-how-to-find-subdocument-in-found-document by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 : 업데이트 하위 문서 (0) | 2019.12.16 |
---|---|
[MONGODB] MongoDB를 : 배열 필드가 요소가있는 경우에 방법을 알아 보려면? (0) | 2019.12.16 |
[MONGODB] MongoDB의 GUI 클라이언트 (크로스 플랫폼 또는 Linux) [마감] (0) | 2019.12.16 |
[MONGODB] 시계열 데이터베이스로 MongoDB를 (0) | 2019.12.16 |
[MONGODB] 어떻게 쿼리 아이가 MongoDB를 개체에 (0) | 2019.12.16 |