[MONGODB] 몽구스 삭제 (풀) 배열 내의 문서는 OBJECTID 작동하지 않는다
MONGODB몽구스 삭제 (풀) 배열 내의 문서는 OBJECTID 작동하지 않는다
나는 다음과 같은 몽구스 스키마를 가지고 :
user = {
"userId" : "myId",
"connections":
[{
"dateConnectedUnix": 1334567891,
"isActive": true
}, {
"dateConnectedUnix": 1334567893,
"isActive": false
}]
}
나는 다음을 얻기 위해, 연결 배열의 두 번째 항목을 삭제하려면 :
user = {
"userId" : "myId",
"connections":
[{
"dateConnectedUnix": 1334567893,
"isActive": false
}]
}
다음 코드는 예상대로 일을한다 :
userAccounts.update({'connections.isActive': false },
{$pull: { 'connections.isActive':false }},
function (err,val) {
console.log(val)
});
그러나, 나는 ObjectId가에 따라 삭제해야합니다. 그리고 다음은 작동하지 않습니다 간다 :
userAccounts.update({'connections._id': '1234-someId-6789' },
{$pull: { 'connections._id': '1234-someId-6789' }},
function (err,val) {
console.log(val)
});
어떤 제안? (구글, 유래, ... 일명) 시간과 더 운이 없었다 나는 화면에 내 머리를 두드리는있다.
해결법
-
==============================
1.위의 코드는 작동하지 않을 것 같다. 그것은 심지어 내가 준 첫 번째 예를 들어 일을하지 말았어야.
위의 코드는 작동하지 않을 것 같다. 그것은 심지어 내가 준 첫 번째 예를 들어 일을하지 말았어야.
MongoDB를, 제거 개체 배열 : 결국 여기이 대답에 의해 지원되었다
여기 내 작업 코드는 다음과 같습니다
userAccounts.update( { userId: usr.userId }, { $pull: { connections : { _id : connId } } }, { safe: true }, function removeConnectionsCB(err, obj) { ... });
-
==============================
2.나는 문서 등이있다
나는 문서 등이있다
나는 주소 배열에서 삭제 주소로이
인터넷에 많이 검색 한 후 나는 해결책을 발견
Customer.findOneAndUpdate(query, {$pull: {address: addressId}}, function(err, data){ if(err) { return res.status(500).json({'error' : 'error in deleting address'}); } res.json(data); });
-
==============================
3.ObjectId가 함께 업데이트를 사용하려면 대신 문자열 표현의 ObjectId가 객체를 사용한다 :
ObjectId가 함께 업데이트를 사용하려면 대신 문자열 표현의 ObjectId가 객체를 사용한다 :
var ObjectId = require('mongoose').Types.ObjectId; userAccounts.update({'connections._id': new ObjectId('1234-someId-6789') }, {$pull: { 'connections._id': new ObjectId('1234-someId-6789') }}, function (err,val) { console.log(val) });
-
==============================
4.
user: { _id: ObjectId('5ccf3fa47a8f8b12b0dce204'), name: 'Test', posts: [ ObjectId("5cd07ee05c08f51af8d23b64"), ObjectId("5cd07ee05c08f51af8d23c52") ] }
게시물 배열에서 하나의 게시물을 삭제
user.posts.pull ( "5cd07ee05c08f51af8d23b64"); () user.save;
-
==============================
5.몽구스 : 4.11.11를 무엇 나를 위해 일한하면 다음과 같은 구문입니다 :
몽구스 : 4.11.11를 무엇 나를 위해 일한하면 다음과 같은 구문입니다 :
const removeTansactionFromUser = (userId, connectionId) => { return User.findByIdAndUpdate(userId, { $pull: { "connections": connectionId} }, {'new': true} ); };
문자열 형식 또는 ObjectId가 형식 몽구스 지원 ID입니다. 팁 : 새로운 ObjectId가가 (stringId) 문자열에서 ObjectId가로 전환
-
==============================
6.당신은 몽구스 5.4.x에서 할 수 있습니다
당신은 몽구스 5.4.x에서 할 수 있습니다
const result = await User.findByIdAndUpdate(user_id, { $pull: { connections: { _id: con_id } } }, { new: true }); if (result) console.log(result)
연결 배열로부터 항목을 제거 제공 _id 속성 값에 기초 할 것이다
from https://stackoverflow.com/questions/19786075/mongoose-deleting-pull-a-document-within-an-array-does-not-work-with-objectid by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의에서 수집 이름에 규칙이 있습니까? (0) | 2019.12.16 |
---|---|
[MONGODB] $ 또는 조건 몽구스의 찾기 방법은 제대로 작동하지 않습니다 (0) | 2019.12.16 |
[MONGODB] MongoDB를 실행하고 있습니까? (0) | 2019.12.16 |
[MONGODB] MongoDB의에서 중복 레코드 찾기 (0) | 2019.12.16 |
[MONGODB] 몽구스 스키마 생성 (0) | 2019.12.16 |