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 배열이 있습니다.
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
길이가 있습니다.
답변
당신이 사용자와도 조건 같은 다른 분야에서 찾으려는 경우, 당신은 쉽게 확산 및 삼항 연산자 사용에 아래처럼 할 수 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),
},
},
답변
이것은 mongo 쿼리와 관련이 없습니다. 저는 SQL에 익숙했고 Studio3T IDE를 사용하여 SQL을 사용하여 mongo 데이터베이스를 쿼리했습니다. 당신이 나와 같은 사람이라면 id 값을 형변환해야한다는 점을 지적하고 싶습니다. 따라서 쿼리는 다음과 같습니다.
SELECT _id from <collectionName>
WHERE _id = ObjectId("5883d387971bb840b7399130");