2014-04-29 6 views
1

모든 목록을 반환하도록 데이터 집합을 쿼리하려고합니다. 문자열 항목이 null이 아닙니다. 내 예를 들어 테이블 :Web2Py DAL - 목록 확인 방법 : 없음에 대한 문자열 형식 항목

for item in db(db.newItems.tasks != None).select(db.newItems.tasks): 

반환 : 없음 그래서 등에

db.define_table('newItems', 
      Field('name', 'string'), 
      Field('tasks', 'list:string')) 

쿼리에만 반환하도록

[] 
[] 
[u'Wash Dog', u'Mow Yard'] 
[] 
[u'Do X', u'Then do Y'] 
[] 

어떻게 쿼리를 구성 않습니다

[u'Wash Dog', u'Mow Yard'] 
[u'Do X', u'Then do Y'] 

감사합니다. 당신

갱신 :

SQLite는 테스트하지만 MongoDB를 작동하지 않을 때 대답은 작동합니다.

In [4]: db.Tasks.email != [] 
Out[4]: <Query {'email': {'$ne': ''}}> 

몽고 쉘 :

> db.Tasks.find().count() 
1195 (total records) 

> db.Tasks.find({'email': {'$ne': ''}}).count() 
1195 

올바른 쿼리가 있어야한다 :

> db.Tasks.find({email: {$ne: [ ] }}).count() 
108 

이는이다 빈 목록은 []이 잘못된 결과를 산출 ''로 전달됩니다 mongo dal의 버그 또는 빈 목록을 지정할 수있는 또 다른 방법이 있습니까? 또한 None이 일이 기록을 제외합니다

db(db.newItems.tasks != []).select(db.newItems.tasks) 

참고 : 당신이 할 수 있도록 task에 대한 SQLFORM, 빈 값을 통해 입력 한 기록이 아니라 None보다 빈리스트로 저장받을 경우

답변

1

task의 값 (from가 아닌 task 값없이 레코드를 삽입 한 경우 존재할 수 있음)은 .insert() from을 사용합니다.

업데이트 : MongoDB 어댑터의 버그로 인해 위의 코드가 MongoDB에서 작동하지 않는 것으로 보입니다.

+0

권장 해 주셔서 감사합니다. 위의 방법을 사용하여 여전히 모든 빈 목록에 쿼리가 적용됩니다. 다른 제안? 비어있는 것을 확인하는 데 '절'조항이 도움이 될까요? – user1175570

+0

흠, 시도 할 때가 아닙니다. Google 그룹에 문제가있는 앱을 게시하면 데이터베이스에있는 가치를 정확히 알 수 있습니다. – Anthony

+0

은 sqlite에서는 작동하지만 mongodb에서는 작동하지 않습니다. DAL에 의해 생성 된 mongo 쿼리를 자세히 설명하는 질문을 업데이트했습니다. – user1175570