dbref java_查询mongodb dbref内部字段
我需要隱藏其isActive標志設置為false的所有用戶相關數據 . 有許多集合我使用了DBRef類型的用戶集合(大約14個集合),每個集合包含超過1000萬條記錄 .
讓我借助例子更恰當地解釋一下 .
假設我有兩個集合:
用戶
聯系
用戶集包含以下字段:
名字(字符串)
姓氏(String)
isActive(布爾)
聯系人集合包含以下字段:
Contacter(User)聲明為DBref類型 .
Contactee(User)聲明為DBRef類型 .
ContactStatus(String)
現在我要觸發一個查詢,該查詢將獲取其所有聯系人 ContactStatus = "Confirmed" && Contacter.isActive = true && Contactee.isActive = true
就mongodb而言,查詢將是這樣的:
db.Contacts.find({"ContactStatus" : "Confirmed", "Contacter.isActive" : true, "Contactee.isActive" : true});
但是當我在mongo shell中運行此查詢時,它總是返回零記錄 .
所以這里的問題是1)是否可以在DBRef的內部字段上觸發查詢? 2)如果沒有,那我該怎么做呢 .
注意 - 在此階段,我無法修改數據模型 . 在“in”查詢的幫助下,我可以做到這一點 . 但它最終會在我需要隱藏該用戶的地方增加一次往返 .
目前我使用的是mongodb-2.4.5和Spring-Data-MongoDB-1.2.3 jar
到目前為止我的代碼是這樣的 -
Criteria criteria = new Criteria();
criteria = criteria.where(Contact.CONTACT_REQUEST_STATUS).is(ContactRequestStatusEnum.ACCEPTED);
criteria = criteria.and(Contact.CONTACTER + "." + User.ACTIVE).is(Boolean.TRUE);
criteria = criteria.and(Contact.CONTACTEE + "." + User.ACTIVE).is(Boolean.TRUE);
Query q = new Query(criteria);
List contacts = Contacts.find(q, Contact.class);
總結
以上是生活随笔為你收集整理的dbref java_查询mongodb dbref内部字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器物品展示框刷物品,我的世界1per
- 下一篇: sql 删除字段中下划线_SQL基础教程