[MONGODB] 어떻게 MongoDB의 쿼리 가입?
MONGODB어떻게 MongoDB의 쿼리 가입?
이 같은 사용자 문서 컬렉션이 있습니다 :
User {
id:"001"
name:"John",
age:30,
friends:["userId1","userId2","userId3"....]
}
사용자는 내가 SQL에 다음 쿼리가 많은 친구 :
select * from user where in (select friends from user where id=?) order by age
나는 MongoDB의 비슷한 뭔가를하고 싶습니다.
해결법
-
==============================
1.편집 :이 답변은 V3.2 이전하여 MongoDB의 버전에 적용됩니다.
편집 :이 답변은 V3.2 이전하여 MongoDB의 버전에 적용됩니다.
당신은 당신이 한 쿼리에서 원하는 작업을 수행 할 수 없습니다. 먼저 다음, 친구의 사용자 ID의 목록을 검색 나이 문서 및 종류를 검색 할 두 번째 쿼리에 그 ID를 통과해야합니다.
var user = db.user.findOne({"id" : "001"}, {"friends": 1}) db.user.find( {"id" : {$in : user.friends }}).sort("age" : 1);
-
==============================
2.하나의 쿼리가 집계 프레임 워크의 $ 조회 기능을 사용하여와 모든 것을 가지고하려면 다음을 수행하십시오
하나의 쿼리가 집계 프레임 워크의 $ 조회 기능을 사용하여와 모든 것을 가지고하려면 다음을 수행하십시오
db.User.aggregate( [ // First step is to extract the "friends" field to work with the values { $unwind: "$friends" }, // Lookup all the linked friends from the User collection { $lookup: { from: "User", localField: "friends", foreignField: "_id", as: "friendsData" } }, // Sort the results by age { $sort: { 'friendsData.age': 1 } }, // Get the results into a single array { $unwind: "$friendsData" }, // Group the friends by user id { $group: { _id: "$_id", friends: { $push: "$friends" }, friendsData: { $push: "$friendsData" } } } ] )
하자는 사용자 수집의 내용은 다음과 같다 말 :
{ "_id" : ObjectId("573b09e6322304d5e7c6256e"), "name" : "John", "age" : 30, "friends" : [ "userId1", "userId2", "userId3" ] } { "_id" : "userId1", "name" : "Derek", "age" : 34 } { "_id" : "userId2", "name" : "Homer", "age" : 44 } { "_id" : "userId3", "name" : "Bobby", "age" : 12 }
쿼리의 결과는 다음과 같습니다
{ "_id" : ObjectId("573b09e6322304d5e7c6256e"), "friends" : [ "userId3", "userId1", "userId2" ], "friendsData" : [ { "_id" : "userId3", "name" : "Bobby", "age" : 12 }, { "_id" : "userId1", "name" : "Derek", "age" : 34 }, { "_id" : "userId2", "name" : "Homer", "age" : 44 } ] }
-
==============================
3.https://docs.mongodb.org/manual/reference/operator/aggregation/lookup/
https://docs.mongodb.org/manual/reference/operator/aggregation/lookup/
이 MongoDB의 쿼리를 결합하기위한 문서이며,이 버전 3.2의 새로운 기능입니다.
그래서이 도움이 될 것입니다.
-
==============================
4.MongoDB를 조인이없는,하지만 경우에 당신은 할 수 있습니다 :
MongoDB를 조인이없는,하지만 경우에 당신은 할 수 있습니다 :
db.coll.find({friends: userId}).sort({age: -1})
-
==============================
5.MongoDB의에서 쿼리를 조인 한 종류는 목록에서 일치 넣어 IDS (IDLIST가), 그리고에 $로 다른 (또는 동일한) 컬렉션 사용 찾을 수 있습니까 해당 ID에 대해 하나의 콜렉션에 문의입니다 : IDLIST
MongoDB의에서 쿼리를 조인 한 종류는 목록에서 일치 넣어 IDS (IDLIST가), 그리고에 $로 다른 (또는 동일한) 컬렉션 사용 찾을 수 있습니까 해당 ID에 대해 하나의 콜렉션에 문의입니다 : IDLIST
u = db.friends.find({"friends": ? }).toArray() idlist= [] u.forEach(function(myDoc) { idlist.push(myDoc.id ); } ) db.friends.find({"id": {$in : idlist} } )
-
==============================
6.만 채우기 배열 친구.
만 채우기 배열 친구.
User.findOne({ _id: "userId"}) .populate('friends') .exec((err, user) => { //do something });
결과는 다음과 같이 동일합니다 :
{ "_id" : "userId", "name" : "John", "age" : 30, "friends" : [ { "_id" : "userId1", "name" : "Derek", "age" : 34 } { "_id" : "userId2", "name" : "Homer", "age" : 44 } { "_id" : "userId3", "name" : "Bobby", "age" : 12 } ] }
동일이 : - ObjectId가의 배열에 채우기를 사용하여 몽구스
-
==============================
7.당신은 당신이 (S-SQL 확장 SQL에) 하나의 쿼리에서 원하는 것을 할 playOrm를 사용할 수 있습니다.
당신은 당신이 (S-SQL 확장 SQL에) 하나의 쿼리에서 원하는 것을 할 playOrm를 사용할 수 있습니다.
-
==============================
8.
var p = db.sample1.find().limit(2) , h = []; for (var i = 0; i < p.length(); i++) { h.push(p[i]['name']); } db.sample2.find( { 'doc_name': { $in : h } } );
나를 위해 작동합니다.
-
==============================
9.당신은 몽고 조인 쿼리를 사용하여 한 번에 그것을 할 수 있습니다. 여기의 모습 방법입니다
당신은 몽고 조인 쿼리를 사용하여 한 번에 그것을 할 수 있습니다. 여기의 모습 방법입니다
const joinQuery = require("mongo-join-query"); joinQuery( mongoose.models.User, { find: {}, populate: ["friends"], sort: { age: 1 }, }, (err, res) => (err ? console.log("Error:", err) : console.log("Success:", res.results)) );
결과는 사용자가 나이 주문한 것과 친구 모두 포함 된 개체.
장면은 뒤에 몽고 조인 쿼리에 가입 할 수있는 모델을 확인하려면 몽구스 스키마를 사용하고 조인을 수행 할 집계 파이프 라인 및 쿼리를 작성합니다.
from https://stackoverflow.com/questions/4563205/how-to-join-query-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 찾을 수없는 클래스 'MongoClient' (0) | 2019.12.09 |
---|---|
[MONGODB] MongoDB를 3.2 인증에 실패 (0) | 2019.12.09 |
[MONGODB] 문제는 유성의 예제를 실행하기 (0) | 2019.12.09 |
[MONGODB] 어떻게 다른 시간대에 년 - 월 - 일까지 집계합니다 (0) | 2019.12.09 |
[MONGODB] MongoDB를하고 Nodejs으로 삽입 및 쿼리 날짜 (0) | 2019.12.09 |