[javascript] MongoDB는 _id 배열에서 어디를 선택합니까?

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

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

또는 내가있는 경우 _id array하나씩 선택하고 array/object결과 를 재구성해야 합니까?



답변

쉬움 🙂

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

출처 : http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in


답변

목록은 ID의 배열입니다.

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

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

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


답변

mongodb는 bson및 bson을 사용하기 때문에 중요한 속성 유형입니다. 다음과 같이 사용해야하기 때문 _id입니다 ObjectId.

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

다음과 mongodb compass같이 사용됩니다.

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

참고 : 문자열의 objectId에는 24길이가 있습니다.


답변

당신이 사용자와도 조건 같은 다른 분야에서 찾으려는 경우, 당신은 쉽게 확산 및 삼항 연산자 사용에 아래처럼 할 수 aggregatematch

 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),
              },
            },


답변

이것은 mongo 쿼리와 관련이 없습니다. 저는 SQL에 익숙했고 Studio3T IDE를 사용하여 SQL을 사용하여 mongo 데이터베이스를 쿼리했습니다. 당신이 나와 같은 사람이라면 id 값을 형변환해야한다는 점을 지적하고 싶습니다. 따라서 쿼리는 다음과 같습니다.

SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");


답변