[MONGODB] MongoDB를 / 몽구스 findMany - 배열에 나열된 ID를 가진 모든 문서를 찾을 수
MONGODBMongoDB를 / 몽구스 findMany - 배열에 나열된 ID를 가진 모든 문서를 찾을 수
내가 _ids의 배열을 가지고 있고 그에 따라 모든 문서를 얻으려면, 그것을 할 수있는 가장 좋은 방법은 무엇입니까?
같은 뭔가 ...
// doesn't work ... of course ...
model.find({
'_id' : [
'4ed3ede8844f0f351100000c',
'4ed3f117a844e0471100000d',
'4ed3f18132f50c491100000e'
]
}, function(err, docs){
console.log(docs);
});
배열은 _ids의 수백을 포함 할 수 있습니다.
해결법
-
==============================
1.몽구스의 찾기 기능은 MongoDB에 대한 전체 쿼리입니다. 이 방법은 당신은 단지 동일한의 SQL 버전처럼 작동 절에 편리 MongoDB를 $를 사용할 수 있습니다.
몽구스의 찾기 기능은 MongoDB에 대한 전체 쿼리입니다. 이 방법은 당신은 단지 동일한의 SQL 버전처럼 작동 절에 편리 MongoDB를 $를 사용할 수 있습니다.
model.find({ '_id': { $in: [ mongoose.Types.ObjectId('4ed3ede8844f0f351100000c'), mongoose.Types.ObjectId('4ed3f117a844e0471100000d'), mongoose.Types.ObjectId('4ed3f18132f50c491100000e') ]} }, function(err, docs){ console.log(docs); });
이 방법은 심지어 배열이 수십 ID의 수천을 포함하는 잘 작동합니다. (참조 효율적으로 기록의 소유자를 결정)
나는 MongoDB를 작업하는 사람이 우수한 공식 MongoDB를 문서의 고급 쿼리 섹션을 읽어 것이 좋습니다
-
==============================
2.쿼리의 형식을 사용
쿼리의 형식을 사용
let arr = _categories.map(ele => new mongoose.Types.ObjectId(ele.id)); Item.find({ vendorId: mongoose.Types.ObjectId(_vendorId) , status:'Active'}) .where('category') .in(arr) .exec();
-
==============================
3.모두 Node.js를하고 MongoChef는 ObjectId가로 변환 나를 강제로. 이것은 내가 몇 가지 속성을 DB에서 사용자 목록을 잡아 가져 오기 위해 사용하는 것입니다. 라인 8 유형 변환을 마음.
모두 Node.js를하고 MongoChef는 ObjectId가로 변환 나를 강제로. 이것은 내가 몇 가지 속성을 DB에서 사용자 목록을 잡아 가져 오기 위해 사용하는 것입니다. 라인 8 유형 변환을 마음.
// this will complement the list with userName and userPhotoUrl based on userId field in each item augmentUserInfo = function(list, callback){ var userIds = []; var users = []; // shortcut to find them faster afterwards for (l in list) { // first build the search array var o = list[l]; if (o.userId) { userIds.push( new mongoose.Types.ObjectId( o.userId ) ); // for the Mongo query users[o.userId] = o; // to find the user quickly afterwards } } db.collection("users").find( {_id: {$in: userIds}} ).each(function(err, user) { if (err) callback( err, list); else { if (user && user._id) { users[user._id].userName = user.fName; users[user._id].userPhotoUrl = user.userPhotoUrl; } else { // end of list callback( null, list ); } } }); }
-
==============================
4.IDS는 오브젝트 ID의 배열이다 :
IDS는 오브젝트 ID의 배열이다 :
const ids = [ '4ed3ede8844f0f351100000c', '4ed3f117a844e0471100000d', '4ed3f18132f50c491100000e', ];
콜백 몽구스를 사용 :
Model.find().where('_id').in(ids).exec((err, records) => {});
비동기 기능 몽구스를 사용 :
records = await Model.find().where('_id').in(ids).exec();
실제 모델과 모델을 변경하는 것을 잊지 마십시오.
from https://stackoverflow.com/questions/8303900/mongodb-mongoose-findmany-find-all-documents-with-ids-listed-in-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 어떻게 날짜 형식으로 텍스트에서 MongoDB를에 속성을 변환합니까? (0) | 2019.12.04 |
---|---|
[MONGODB] created_at를 추가하고 필드 updated_at 스키마를 몽구스하기 (0) | 2019.12.04 |
[MONGODB] 각 문서의 추가 필드와 반응성 게시 구축 (0) | 2019.12.04 |
[MONGODB] MongoDB를 : 여러 기준에 배열에서 찾기 값 (0) | 2019.12.04 |
[MONGODB] MongoDB를이 - 중첩 된 배열에서 객체를 업데이트 (0) | 2019.12.04 |