programing

MongoDB가 _id 배열의 위치를 선택하시겠습니까?

minecode 2023. 3. 26. 13:58
반응형

MongoDB가 _id 배열의 위치를 선택하시겠습니까?

mongo db에서는 SQL과 같이 컬렉션의 문서를 선택할 수 있습니다.

SELECT * FROM collection WHERE _id IN (1,2,3,4);

혹은 내가 가지고 있는 경우_id array1개씩 선택한 후 재작성해야 합니다.array/object결과를 얻을 수 있을까요?

간단 :)

db.collection.find( { _id : { $in : [1,2,3,4] } } );

취득처: https://www.mongodb.com/docs/manual/reference/operator/query/in/ #mongodb-syslog-op.-in

왜냐하면 mongodb는bsonbson의 경우 중요한 속성 유형입니다.그리고 그 이유는_idObjectId다음과 같이 사용해야 합니다.

db.collection.find( { _id : { $in : [ObjectId('1'),ObjectId('2')] } } );

및 인mongodb compass다음과 같이 사용:

{ "_id" : { $in : [ObjectId('1'),ObjectId('2')] } }

주의: 문자열의 objectId에는24길이.

이거 드셔보세요

var ids = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"];

var oids = [];
ids.forEach(function(item){
oids.push(new ObjectId(item));
});

.find({ _id: {$in : oids}})

list는 ID 배열입니다.

이 코드 목록에는 사용자 컬렉션의 ID 배열이 있습니다.

var list = ["5883d387971bb840b7399130","5883d389971bb840b7399131","5883d38a971bb840b7399132"]

    .find({ _id: {$in : list}})

조건부로 사용자 및 다른 필드에 의해 찾고 싶다면 아래처럼 쉽게 할 수 있습니다.aggregate그리고.match

 const p_id = patient_id;
    let fetchingReports = await Reports.aggregate([
      ...(p_id
        ? [
            {
              $match: {
                createdBy: mongoose.Types.ObjectId(id),
                patient_id: p_id,
              },
            },
          ]
        : [
            {
              $match: {
                createdBy: mongoose.Types.ObjectId(id),
              },
            },
        

언급URL : https://stackoverflow.com/questions/7713363/mongodb-select-where-in-array-of-id

반응형