일부 MongoDB 쿼리가 작동하지 않습니다. 내 응용 프로그램에서 스레드와 메시지를 관리하는 간단한 구조가 있습니다.읽지 않은 메시지 쿼리
{
participants: [
'u1,'u2'
]
messages: [
{text: 'some message', readBy: ['u1','u2']}
{text: 'some other message', readBy: ['u1']}
]
}
'U2'나는 쿼리에서 반환이 특정 스레드를 좀하고 싶습니다된다. 이것은 내가 어디까지 왔는지 알 수 있지만, 하나의 메시지가 'u2'에 의해 읽히 자마자 메시지 중 하나가 'u2'에 의해 읽혀질 때 더 이상 반환되지 않습니다.
Threads.find(
{
$and: [
{'participants': this.userId},
{'messages.readBy': {$nin: [this.userId]}}
]
}
)
데이터 구조를 변경하지 않고 어떻게이 작업을 수행 할 수 있습니까?
가 예상 무엇입니까 당신 조회의 결과? – styvane
결국 읽지 않은 모든 스레드를 계산해야합니다. 즉, 읽지 않은 메시지가 적어도 하나있는 스레드를 선택해야합니다. 이 정보를 사용하여 웹 페이지에 배지를 표시하므로 읽지 않은 메시지가 있음을 알 수 있습니다. SQL에서부터 나는 비정규 화 된 것들을 저장하지 않아서 주어진 구조로 끝났습니다. Meteor를 사용하고 있다는 점에 유의해야합니다. MongoDB가 지원하는 것은 모두 지원되며 반응이 없습니다. – chris1069603
당신이 수락 한 대답이 효과가 있다면, 이것을하는 더 좋은 방법이 있습니다. – styvane