[MONGODB] 몽구스 통해 몽고 배열 푸시 상품
MONGODB몽구스 통해 몽고 배열 푸시 상품
그래서 좋은 답을 찾고 비트가 흐르고했지만 나는 확실히 내가 난 후 무엇을 설명하는 올바른 단어를 잃었어요 있다고 해요.
기본적으로 나는 MongoDB를 수집 호출 한 '사람' 다음과 같이 해당 모음의 스키마는 다음과 같습니다
people: {
name: String,
friends: [{firstName: String, lastName: String}]
}
지금, 나는 데이터베이스에 연결하는 아주 기본적인 표현 응용 프로그램이 성공적으로 비어있는 친구의 배열과 '사람'을 만듭니다.
응용 프로그램의 보조 대신에, 한 형태 친구를 추가하는 장소입니다. 이 양식은 또한 적절한 사람 개체에 대한 참조의 이름 필드에 이름 및 성 다음 게시물합니다.
그때 새로운 친구 객체를 만드는 일을 힘든 시간을 보내고하고있어 어떤 친구의 배열을 "밀어".
나는이 몽고 콘솔을 통해이 작업을 수행 할 때이 조회 기준 후 내 두 번째 인수로 $ 푸시로 업데이트 기능을 사용하는 것이 알지만, 몽구스가이 일을 얻을 수있는 적절한 방법을 찾을 수 없습니다.
db.people.update({name: "John"}, {$push: {friends: {firstName: "Harry", lastName: "Potter"}}});
최신 정보: 그래서, 아드리안의 대답은 매우 도움이되었다. 다음은 내 목표를 달성하기 위해 한 일이다.
내 app.js 파일에, 내가 사용하는 임시 경로를 설정
app.get('/addfriend', users.addFriend);
어디에 내 users.js에 내가 가진 파일
exports.addFriend = function (req, res, next)
{
var friend = {"firstName": req.body.fName, "lastName": req.body.lName};
Users.findOneAndUpdate({name: req.user.name}, {$push: {friends: friend}});
};
해결법
-
==============================
1.가정, VAR 친구 = {firstName을 '해리',이 lastName '포터'};
가정, VAR 친구 = {firstName을 '해리',이 lastName '포터'};
당신은 두 가지 옵션이 있습니다 :
메모리 모델을 업데이트하고 (일반 자바 스크립트 사항 Array.push)을 저장합니다 :
person.friends.push(friend); person.save(done);
또는
PersonModel.update( { _id: person._id }, { $push: { friends: friend } }, done );
나는 항상 시도하고 가능한 경우는 몽구스 당신에게 (후크, 검증 등)를 제공하는 것이 더 이익의 존중 것이기 때문에, 첫 번째 옵션에 대한 이동합니다.
그러나 동시 쓰기를 많이하고 있다면, 당신은 당신이 전체 모델마다 교체하고 추가 이전 친구를 잃는에서 당신을 중지 불쾌한 버전 오류하게 될 겁니다 경쟁 조건에 타격을 줄 것으로 예상된다. 그것은 절대적으로 필요한 때 그래서에만 전자로 이동합니다.
-
==============================
2.
{ $push: { <field1>: <value1>, ... } }
대답은 위의 모든 요구 사항을 충족하지만, 나는 다음을 수행하여 작업있어
var objFriends = { fname:"fname",lname:"lname",surname:"surname" }; Friend.findOneAndUpdate( { _id: req.body.id }, { $push: { friends: objFriends } }, function (error, success) { if (error) { console.log(error); } else { console.log(success); } }); )
-
==============================
3.업데이트 문서에 $ 푸시를 사용하여 배열 내부에 새 값을 삽입합니다.
업데이트 문서에 $ 푸시를 사용하여 배열 내부에 새 값을 삽입합니다.
발견:
db.getCollection('noti').find({})
찾기 검색 결과 :
{ "_id" : ObjectId("5bc061f05a4c0511a9252e88"), "count" : 1.0, "color" : "green", "icon" : "circle", "graph" : [ { "date" : ISODate("2018-10-24T08:55:13.331Z"), "count" : 2.0 } ], "name" : "online visitor", "read" : false, "date" : ISODate("2018-10-12T08:57:20.853Z"), "__v" : 0.0 }
최신 정보:
db.getCollection('noti').findOneAndUpdate( { _id: ObjectId("5bc061f05a4c0511a9252e88") }, { $push: { graph: { "date" : ISODate("2018-10-24T08:55:13.331Z"), "count" : 3.0 } } })
업데이트 결과 :
{ "_id" : ObjectId("5bc061f05a4c0511a9252e88"), "count" : 1.0, "color" : "green", "icon" : "circle", "graph" : [ { "date" : ISODate("2018-10-24T08:55:13.331Z"), "count" : 2.0 }, { "date" : ISODate("2018-10-24T08:55:13.331Z"), "count" : 3.0 } ], "name" : "online visitor", "read" : false, "date" : ISODate("2018-10-12T08:57:20.853Z"), "__v" : 0.0 }
-
==============================
4.그렇게하는 쉬운 방법은 다음을 사용하는 것입니다 :
그렇게하는 쉬운 방법은 다음을 사용하는 것입니다 :
var John = people.findOne({name: "John"}); John.friends.push({firstName: "Harry", lastName: "Potter"}); John.save();
-
==============================
5.나뿐만 아니라이 문제에 달렸다. 내 수정 자식 스키마를 만드는 것이 었습니다. 당신의 모델에 대한 예는 아래를 참조하십시오.
나뿐만 아니라이 문제에 달렸다. 내 수정 자식 스키마를 만드는 것이 었습니다. 당신의 모델에 대한 예는 아래를 참조하십시오.
---- 사람 모델
const mongoose = require('mongoose'); const SingleFriend = require('./SingleFriend'); const Schema = mongoose.Schema; const productSchema = new Schema({ friends : [SingleFriend.schema] }); module.exports = mongoose.model('Person', personSchema);
*** 중요 : SingleFriend.schema은 -> 스키마를 사용 소문자로 확인
--- 아이 스키마
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const SingleFriendSchema = new Schema({ Name: String }); module.exports = mongoose.model('SingleFriend', SingleFriendSchema);
from https://stackoverflow.com/questions/33049707/push-items-into-mongo-array-via-mongoose by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 배열에 ObjectId가의에 조회 $ (0) | 2019.11.29 |
---|---|
[MONGODB] 어떻게 NodeJs 응용 프로그램 및 모듈에서 MongoDB를 적절히 재사용 연결에 (0) | 2019.11.29 |
[MONGODB] 여러 필드 MongoDB에 의해 기 값 (0) | 2019.11.29 |
[MONGODB] 어떻게 Node.js를 웹 응용 프로그램에서 MongoDB의 연결을 관리합니까? (0) | 2019.11.29 |
[MONGODB] 더 정렬 순서가 지정되지 않은 경우 어떻게 MongoDB를 정렬 기록을합니까? (0) | 2019.11.29 |