2011-10-20 2 views
1

Upsert 연산을 사용하는 데 문제가 있습니다.MongoDB에서 자동 삽입 기본값 또는 업데이트 무시하는 방법

"created"및 "updated"테이블에 두 개의 날짜 필드가 있습니다. 하나의 레코드가 없으면 INSERT 작업을 수행하는 업데이트 작업을 사용하고 그렇지 않으면 UPDATE 작업을 수행합니다.

처음 삽입 할 때 "생성 된"필드와 "업데이트"필드는 모두 자동으로 현재 날짜를 설정하고, 다음 번에 업데이트 할 때 "생성 된"필드는 무시하고 "업데이트"필드를 업데이트합니다.

colls.Update(Query.EQ("_id", page.Id), 
      Update.Set("created", page.Created)//in here,how to?? 
        .Set("updated", page.LastUpdated) 
        .Inc("freq", 1), UpdateFlags.Upsert, SafeMode.False); 

내 직렬화 코드 :

cm.MapProperty<DateTime>(c => c.Created).SetElementName("created") 
        .SetSerializationOptions(datetimeSerializationOptions) 
        .SetDefaultValue(DateTime.Now); 

cm.MapProperty<DateTime>(c => c.LastUpdated).SetElementName("updated") 
        .SetSerializationOptions(datetimeSerializationOptions); 

답변

1

현재 MongoDB를의 "upsert"지원하지 않는 동작

하지만 난 한 성명에서 that.Here 할 수 없습니다 내 코드입니다 다르게 삽입 또는 업데이 트가 있다면. 하지만 그들의 계획에 jira. 따라서 삽입 또는 업데이트를 결정하기 전에 레코드가 존재하는지 확인하십시오 (단순히 다중 쿼리 사용). 또는 mongodb의 새로운 버전을 기다리십시오.

+0

감사합니다. 이제 여러 쿼리를 사용하여 작업했습니다. – springchun