우선, 나는 mongodb를 매우 신작했습니다. 여기에 대한 해결책을 찾을 수 없었던 나의 질문이있다.모든 Mongo 콜렉션을 반복하고 쿼리를 실행하십시오.
3 가지 컬렉션이 있다고 가정 해 보겠습니다.
mongos> show collections
collectionA
collectionB
collectionC
나는이 데이터베이스 산업사 모든 컬렉션을 반복 처리하는 스크립트를 생성하고 이러한 컬렉션을 각각의 마지막에 삽입 타임 스탬프를 찾고 싶어요. 몽고 안에서 일하는 것은 다음과 같습니다.
var last_element = db.collectionA.find().sort({_id:-1}).limit(1);
printjson(last_element.next()._id.getTimestamp());
ISODate("2014-08-28T06:45:47Z")
1. 문제 (모든 컬렉션을 반복하되)
STH 할 수있는 가능성이있다. 처럼.
var my_collections = show collections;
my_collections.forEach(function(current_collection){
print(current_collection);
});
여기에서 문제는 my_collections
에 대한 할당이 작동하지 않습니다. SyntaxError: Unexpected identifier
이 나옵니다. '쇼'진술서를 인용해야합니까? 심지어 가능할까요?
2. 문제점
난 이렇게 1 문제를 해결할 수있다 (JS의 VAR의 컬렉션을 저장)
error hasNext: false at src/mongo/shell/query.js:124
다음 last_element.next()
다음 오류를 생성
var my_collections = ["collectionA", "collectionB", "collectionC"];
my_collections.forEach(function(current_collection){
var last_element = db.current_collection.find().sort({_id:-1}).limit(1);
print(current_collection);
printjson(last_element.next()._id.getTimestamp());
});
을 last_element가 올바르게 저장되지 않은 것 같습니다.
내가하는 일에 대한 제안은 무엇입니까 ??
UPDATE
Neils의 대답은이 솔루션에 저를지도한다. 그의 코드 외에도 함수 getTimestamp
이 실제로 존재하는지 확인해야했습니다. 일부 '가상'컬렉션의 경우 _id 속성이없는 것 같습니다.
db.getCollectionNames().forEach(function(collname) {
var last_element = db[collname].find().sort({_id:-1}).limit(1);
if(last_element.hasNext()){
var next = last_element.next();
if(next._id !== undefined && typeof next._id.getTimestamp == 'function'){
printjson(collname + " >> "+next._id.getTimestamp());
}else{
print(collname + " undefined!! (getTimestamp N/A)")
}
}
});
여기에 명확히 설명되어 있습니다. '.getTimeStamp()'가 실패하는 유일한 이유는 모든 문서의 기본 키'_id' 필드에 실제로 ObjectId가 없다는 것입니다. MongoDB는 "schemaless"이기 때문에 MongoDB가 필드에서 타입을 혼합하도록 허용하는 것처럼 ** 이것을 실제로보아야합니다 ** 당신은 ** 이것을 일반적인 연습으로해서는 안되며 실제로 이것을 수정해야합니다 이는 항목을 일관되게 만들기 위해 발생합니다. –
그 고마워요! 명시된 바와 같이 나는 mongo에 상당히 익숙하며 관계형 DB 배경에서 왔습니다. 나는 아직도이 컬렉션이 어떻게 생성되었는지, 왜 ObjectID가 없는지 잘 모르겠습니다. 당신이 진술 한대로 나는 이것을 고칠 필요가있을 것이며 왜 그리고 어떻게 이해해야 할 필요가 있습니다. 감사! – cb0