내 MongoDB를, 나는 10 개 개의 레코드가 필드를 가지고있는 학생 수집이 name
와 roll
. 이 컬렉션의 한 레코드는 다음과 같습니다.
{
"_id" : ObjectId("53d9feff55d6b4dd1171dd9e"),
"name" : "Swati",
"roll" : "80",
}
다음 roll
을 사용하여 기존 데이터베이스에서와 같이 컬렉션의 10 개 레코드 모두에 대해서만 필드를 검색하려고합니다 .
SELECT roll FROM student
나는 많은 블로그를 갔지만 모두 쿼리가 있어야합니다 WHERE
. 예를 들면 다음과 같습니다.
db.students.find({ "roll": { $gt: 70 })
쿼리는 다음과 같습니다.
SELECT * FROM student WHERE roll > 70
내 요구 사항은 조건없이 단일 키를 찾는 것입니다. 그래서 그 쿼리 작업은 무엇입니까?
답변
로부터 MongoDB를 워드 프로세서 :
투영에는 명시 적으로 여러 필드가 포함될 수 있습니다. 다음 작업에서 find () 메서드는 쿼리와 일치하는 모든 문서를 반환합니다. 결과 집합에서 항목 및 수량 필드와 기본적으로 _id 필드 만 일치하는 문서로 반환됩니다.
db.inventory.find ({유형 : ‘food’}, {항목 : 1, 수량 : 1})
몽고에서의 사람들에서이 예에서 반환 된 문서의 필드 만 포함됩니다 item
, qty
그리고 _id
.
따라서 다음과 같은 명령문을 발행 할 수 있어야합니다.
db.student.find({}, {roll:1, _id:0})
위의 문장은 학생들 컬렉션에서 모든 문서를 선택하며, 반환 된 문서 만 반환 roll
필드 (및 제외 _id
).
언급하지 않으면 _id:0
반환 된 필드는 roll
and _id
입니다. ‘_id’필드는 항상 기본적으로 표시됩니다. 따라서 _id:0
와 함께 명시 적으로 언급해야합니다 roll
.
답변
테이블에서 모든 데이터를 얻습니다
db.student.find({})
학생 선택 *
_id없이 테이블에서 모든 데이터 가져 오기
db.student.find({}, {_id:0})
학생 이름 선택, 롤
_id를 사용하여 한 필드에서 모든 데이터를 가져옵니다.
db.student.find({}, {roll:1})
아이디 선택, 학생으로부터의 롤
_id없이 한 필드에서 모든 데이터를 가져옵니다.
db.student.find({}, {roll:1, _id:0})
학생 선택 롤
where 절을 사용하여 지정된 데이터 찾기
db.student.find({roll: 80})
선택 * roll = ’80’지역의 학생들로부터
where 절을 사용하고 조건보다 큰 데이터를 찾습니다.
db.student.find({ "roll": { $gt: 70 }}) // $gt is greater than
선택 * 학생이 어디에서 롤> ’70’
where 절을 사용하여 조건보다 크거나 같은 데이터를 찾습니다.
db.student.find({ "roll": { $gte: 70 }}) // $gte is greater than or equal
선택 * 학생이 어디에서 롤> = ’70’
where 절을 사용하여 조건보다 작거나 같은 데이터를 찾습니다.
db.student.find({ "roll": { $lte: 70 }}) // $lte is less than or equal
선택 * 롤에서 학생 <= ’70’
where 절을 사용하고 조건보다 작은 데이터를 찾습니다.
db.student.find({ "roll": { $lt: 70 }}) // $lt is less than
선택 * 롤 < ’70’에서 학생으로부터
답변
나는 mattingly890이 정답을 가지고 있다고 생각합니다. 여기에 패턴 / 쉼표와 함께 또 다른 예가 있습니다.
db.collection.find( {}, {your_key:1, _id:0})
답변
여기 3 가지 방법이 있습니다 . 지루한 것이 가장 짧 습니다 :
db.student.find({}, 'roll _id'); // <--- Just multiple fields name space separated
// OR
db.student.find({}).select('roll _id'); // <--- Just multiple fields name space separated
// OR
db.student.find({}, {'roll' : 1 , '_id' : 1 ); // <---- Old lengthy boring way
특정 필드 사용 연산자 를 제거 하려면 다음을 수행 하십시오-
.
db.student.find({}).select('roll -_id') // <--- Will remove id from result
답변
교육 목적으로 만 다음 방법 중 하나로 수행 할 수 있습니다.
1.
var query = {"roll": {$gt: 70};
var cursor = db.student.find(query);
cursor.project({"roll":1, "_id":0});
2.
var query = {"roll": {$gt: 70};
var projection = {"roll":1, "_id":0};
var cursor = db.student.find(query,projection);
`
답변
다음 쿼리를 시도하십시오.
db.student.find({}, {roll: 1, _id: 0}).pretty();
도움이 되었기를 바랍니다!!
답변
db.<collection>.find({}, {field1: <value>, field2: <value> ...})
귀하의 예에서 다음과 같은 작업을 수행 할 수 있습니다.
db.students.find({}, {"roll":true, "_id":false})
투사
투영 매개 변수는 일치하는 문서에 반환되는 필드를 결정합니다. 투영 매개 변수는 다음 형식의 문서를 사용합니다.
{ field1: <value>, field2: <value> ... }
The <value> can be any of the following:
반환 문서에 필드를 포함하려면 1 또는 true입니다.
필드를 제외하려면 0 또는 false입니다.
노트
_id 필드의 경우 _id 필드를 반환하기 위해 _id : 1을 명시 적으로 지정할 필요는 없습니다. find () 메소드는 필드를 억제하기 위해 _id : 0을 지정하지 않으면 항상 _id 필드를 리턴합니다.