2014-12-05 6 views
1

특정 요소의 모든 배열을 연결 문자열로 바꾸려고하는 MongoDB 데이터베이스가 있습니다. 현재 대부분의 문서에는 문자열 배열이 있습니다. 배열이있는 각 문서를 찾을 스크립트가 필요합니다 (일부 스크립트는 손으로 이미 업데이트되었습니다). 현재 배열이있는 배열을 배열로 바꿉니다.MongoDB에서 유형 바꾸기

지금까지 내가 가진 :

var cursor = db.recipe.find({ directions: { $type : 4 } }); 
while (cursor.hasNext()) { 
    var doc = cursor.next(); 
    db.recipe.update(
     { _id : doc._id }, 
     { $set : { directions : { $concat : { doc.directions } } } } 
    ); 
}; 

불행히도, 예기치 않은 불평 유지 '.'. 나는 $ concat를 잘못 사용하고 있다고 가정하고 있습니다.

답변

2

$concat은 집계 연산자입니다. 간단히 찾아서 업데이트하려면 일반 자바 스크립트를 사용하십시오.

현재 대부분의 문서에는 문자열 배열이 있습니다. 난 당신이 배열에 $type:4을 적용하면 directions 필드 내부 요소의 배열 인 경우에만 차례로 검사에, 그것을 배열

이 문서의 각을 찾을 것이다 스크립트를 필요 그것 그것은 하나를 찾는다.

예 : 입력 ["x","y"]의 경우 false을 반환하고 [["x"],"y"]의 경우 true을 반환합니다.

배열에 문자열 만 포함되어 있으므로 유형을 찾으려면 $where 연산자를 사용해야합니다.

db.recipe.find({$where:"Array.isArray(this.directions)"}).forEach(function(doc){ 
var value = doc.directions.join(); 
db.recipe.update({"_id":doc._id},{$set:{"directions":value}}); 
}) 
관련 문제