[javascript] mongoose 대 mongodb (nodejs 모듈 / 확장), 어느 쪽이 좋을까요? 그리고 왜?


Answers

몽구스는 훨씬 인기가 있습니다. 나는 그것을 사용하고, 다른 사람들을 사용하지 않았다. 그래서 나는 다른 사람들에 관해서는 말할 수 없지만 몽구스에 대한 나의 불평을 말할 수 있습니다.

  • 어렵거나 가난한 문서
  • Models 이 사용됩니다. 그리고 그들은 당신의 문서 구조를 정의합니다. 그러나 이것이 Mongo에게있어 이상한 것처럼 보입니다. 그 장점 중 하나는 여러분이 열에 던져 넣을 수 있다는 것입니다 (잘못 되었습니까, 속성입니까?).
  • 모델은 대소 문자를 구분합니다 - 내가 사용하는 다른 개발자는 모델이 정의 된 컬렉션 이름의 대소 문자로 인해 w / o 오류를 저장하지 못하게 할 수있는 문제가있었습니다. 모든 소문자 이름을 사용하는 것이 가장 효과적이라는 것을 발견했습니다. 예를 들어 mongooseInstace.model('MyCollection', { "_id": Number, "xyz": String }) 과 같은 작업을 수행하는 대신 컬렉션 이름이 MyCollection 경우에도 수행하는 것이 좋습니다. mongooseInstace.model('mycollection', { "_id": Number, "xyz": String })

그러나 솔직히, 그것은 정말로 유용합니다. 가장 큰 문제는 문서입니다. 그곳에 있지만, 당신이 필요로하는 것을 찾기가 건조하고 어렵습니다. 더 나은 설명과 더 많은 예제를 사용할 수 있습니다. 그러나 일단 당신이이 일들을 지나면 정말로 잘 작동합니다.

Question

나는 방금 Node.js에 도착하여 MongoDB와 함께 사용할 많은 라이브러리가 있다는 것을 보았습니다. 가장 인기있는 것은이 두 가지 인 것처럼 보입니다 (mongoose 및 mongodb). 확장 프로그램의 장단점을 얻을 수 있습니까? 이 둘에 대한 더 나은 대안이 있습니까?

편집 : 흥미로운 node-mongolian으로 보이는 새로운 라이브러리를 발견하고 "몽고 DeadBeef는 mongob shell을 근사하게 시도하는 멋진 Mongo DB node.js 드라이버입니다." (readme.md)

https://github.com/marcello3d/node-mongolian

이것은 이것을 보는 새로운 사람들에게 더 많은 자원을 추가하는 것입니다. 그래서 기본적으로 몽골 인은 ODM처럼 ...




나는 mongodb만을 사용했다. 저의 개인적인 견해로는, 저 레벨에서 시작하고 나서 위로 올라갈 것을 권합니다. 그렇지 않으면 당신은 몽구스 같은 더 높은 수준의 드라이버가 제공하는 추가 고급 기능을 사용하여 실제로 이득을 볼 수 없습니다.

node.js에 특유한 mongodb에 관한 문제는 빈약 한 문서입니다. 설명서와 많은 내용이 있지만 항상 도움이되는 것은 아닙니다. 내가 지금까지 보았던 것은 운전자의 생산 사용의 좋고 철저한 예가 없다. 문서는 연결을 열고 명령을 실행하고 연결을 닫는 것과 같은 템플릿 기반 예제로 채워져 있습니다. 모든 예제에는 각 예제에 필요한 것만 필요한 것이 아니라 필요한 모든 것을 필요로하기 때문에 템플릿에서 복사하여 붙여 넣을 수 있습니다.

완전히 무작위로 추출한 예제를 제공하려면 다음을 수행하십시오.

  • raw {Boolean, default : false}, 원시 bson 버퍼를 사용하여 연산을 수행합니다.

"원시 bson 버퍼를 사용하여 작업 수행"은 정확히 무엇입니까? 어디서나 설명 할 수는 없지만 해당 구문에 대한 Google 검색이 도움이되지 않습니다. 아마 나는 Google을 더 할 수 있었지만 그렇게해서는 안된다. 정보가 있어야합니다. 이 옵션을 활성화 / 비활성화 할 때 성능, 안정성, 무결성, 호환성, 이식성 또는 기능상의 이점이 있습니까? 나는 코드에 깊이 빠져들지 않고 정말로 당신이 내 보트에 있다면 심각한 생각입니다. 나는 완벽한 영속성이 요구되지 않지만 프로그램이 런타임에 매우 안정적이어야하는 데몬을 가지고있다. 이것은 내가 JSON으로 역 직렬화하고 직렬화 할 것을 기대하거나 사용자에게 내부적이고 투명한 저레벨이지만 뭔가 잘못되었다고 생각할 수 있습니다. 좋은 가정을하는 경향이 있지만 나는 중요한 시스템을 만들 때 가정과 추측에 의존하지 않습니다. 그래서 여기에서 코드로 내 주장을 테스트하거나 Google 또는 코드에 대해 더 깊이 파고들 수 있습니다. 이것으로 떨어져 하나로서 그렇게 나쁘지는 않지만 나는 자신의 설명서를 여러 번 읽고이 상황에서 자기를 찾으십시오. 차이는 작업에 소요 된 일 수를 의미 할 수 있습니다. 확인이 필요하고 설명서만으로는 설명이 거의없고 확인 만 할뿐입니다.

설명서가 서둘러. 이벤트를 설명하지 않고 오류가 발생하는시기 또는 오류의 특성에 대한 막연한 세부 정보를 제공하며 명확하지 않은 연결을 수행 할 수있는 여러 가지 방법이 있습니다. 당신은 얻을 수 있고, 완전히 쓸모 없지는 않지만 가장자리 주변은 매우 거칠다. 당신은 추측과 실험에 남아있는 것들이 있음을 알게 될 것입니다.




Links