1. 程式人生 > >Mongodb使用小記2之elemMatch匹配

Mongodb使用小記2之elemMatch匹配

匹配查詢

資料型別如圖

其中

@Document
public class GroupBuy extends AbstractEntity {
	private String bookTitle;
	private String bookId;
	private Double bookPrice;
	private JFile bookCover;
	private Double price;
	private Long timestamp;
	private UserInfo createdBy;
	// the user already joined in
	private Set<UserInfo> members;
	private GroupBuyType type;
	private GroupBuyStatus status;
@Pojo
public class UserInfo {
	private String id;
	private String alias;
	private String walletAddress;
	private JFile avator;

需求: 要判斷當前使用者是否已經參加了團購,即GroupBuy.member是否包括當前使用者。

程式碼:

Criteria criteria = new Criteria();
		criteria.and("bookId").is(bookId);
		criteria.and("members").elemMatch(Criteria.where("id").is(provider.getId()));
		criteria.and("status").in(GroupBuyStatus.started, GroupBuyStatus.finished);
		if (mongoTemplate.exists(new Query(criteria), GroupBuy.class))
			throw new Exception("you can not create groupbuy to buy same book twice!");
Criteria criteria = Criteria.where("bookId").is(bookId).and("status")
				.in(GroupBuyStatus.finished, GroupBuyStatus.started).and("members")
				.elemMatch(Criteria.where("id").is(provider.getId()));

相關推薦

Mongodb使用小記2elemMatch匹配

匹配查詢 資料型別如圖 其中 @Document public class GroupBuy extends AbstractEntity { private String bookTitle; private String bookId; private D

MongoDB基礎2 復制集篇

快照 add tcp 文件目錄 進程管理 color 數據 進程 oss 接著上篇接續 在單臺服務器資源充分的情況下,可以使用多實例,以便充分使用服務器資源 由於我在虛擬機中做的所以恢復了快照 開啟服務systemctl start mongod.service netst

HTML課堂小記2

clas 連接符 class earch 命名法 劃線 例如 for lock BEM命名法: 這裏的B,指的是block,也就是“search-form” 這裏的E,指的是element,也就是跟隨在search-form後的“username”,“password”和“

MongoDB 2 手把手教你增刪改查

我們在  MongoDB 之 你得知道MongoDB是個什麼鬼 MongoDB - 1  中學習瞭如果安裝部署一個 MongoDB 如果沒看到我的金玉良言的話,就重新開啟一次客戶端和服務端吧 本章我們來學習一下關於 MongoDB的增刪改查 一.MongoDB操作 之 原生

mongodb原始碼分析(五)查詢2mongod的資料庫載入

        上一篇文章分析到了客戶端查詢請求的傳送,接著分析服務端的處理動作,分析從服務端響應開始到資料庫 正確載入止,主要流程為資料庫的讀入過程與使用者的認證.         mongod服務對於客戶端請求的處理在mongo/db/db.cpp MyMessageH

mongodb 3.x 實用新功能窺看[2] ——使用$lookup做多表關聯處理

這篇我們來看mongodb另一個非常有意思的東西,那就是$lookup,我們知道mongodb是一個文件型的資料庫,而且它也是最像關係型資料庫的 一種nosql,但是呢,既然mongodb是無模式的,自然就很難在關係型資料庫中非常擅長的多表關聯上發揮作用,在這之前,我們可以使

應用Mongoose開發MongoDB2)模型(models)

length 輸出 ror highlight unit required opts nbsp 在一起 數據模型及基礎操作模板 為了使工程結構清晰,將數據模型(Schema, Model)的建立與增刪查改的基礎操作模板寫在一起,命名為數據庫設計中的Collection(

MongoDB2): 增刪改操作

db nosql mongo 增刪改 curd 附加命令:1、進入前端操作命令./mongo [ip:端口]說明:默認會自動選本地,端口270172、顯示所有的庫> show dbs; 或者 show databases;3、選擇庫> use 庫名;4、顯示庫所有的集合&g

Mongodb集群副本集

only sim post ims mongob sta art 機制 wid 上篇咱們遺留了幾個問題 1主節點是否能自己主動切換連接?眼下須要手動切換 2主節點讀寫壓力過大怎樣解決 3從節點每一個上面的數據都是對數據庫全量拷

Ionic 2node-sass問題解決辦法

tro https load -a href ech lease 問題 node node 重置Ionic項目: npm cache clean 在安裝Ionic2的git-hub項目:https://github.com/driftyco/ionic-con

cocos2d-x 3.2 2048 —— 第五篇

能夠 urn onf 平臺 restart getch ring article dia ***************************************轉載請註明出處:http://blog.csdn.net/lttree****************

MongoDB初探系列四:MongoDB與Java共舞

ever 文件 basic query find man mongodb next() 入學 因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。 1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar

帶你重拾JavaScript(2)console的你所不知道的功能

斷言 adding devel bcf dev ces com 字符 bom JavaScript最常用的調試工具就是console.info()了。console是瀏覽器中window對象的屬性之一,由瀏覽器對象模型(BOM)提供,作用是訪問瀏覽器控制臺,你可以通過

linux (centos)下安裝 mongodb v3.2 筆記

安裝 i686 src gpa logs http 權限 fig 說明 1.下載mongodb 默認都是64位的,這個有點尷尬。。。 64位系統下載地址: https://www.mongodb.org/dl/linux/x86_64-debian81?

mongodb權威指南mongodb基礎知識學習記錄

pre lec fin 基礎知識 pda log editor 批量 l數據庫 mongo show dbs查看所有的數據庫 使用use可以切換數據庫,如果沒有數據庫則創建一個新的 use local切換倒local數據庫 增加數據 db.test.insert({name

C語言復習2位操作

位操作位操作 位操作是程序設計中對位模式按位或二進制數的一元和二元操作. 在許多古老的微處理器上, 位運算比加減運算略快, 通常位運算比乘除法運算要快很多. 在現代架構中, 情況並非如此:位運算的運算速度通常與加法運算相同(仍然快於乘法運算)。 位運算符 取反(~)是一元運算符, 對一個

MongoDB 學習筆記 權限管理基礎

顯示 命令 修改 技術 sky 需要 bad 官方 改密碼 權限管理基礎 MongoDB有很多用戶roles,這裏只是簡單列舉下命令的使用,具體的role的含義,請查閱官方文檔。 https://docs.mongodb.com/manual/reference/bui

MongoDB 學習筆記 分片和副本集混合運用

comment ssm table mmap insert ise class 學習 urn 分片和副本集混合運用: 基本架構圖: 搭建詳細配置: 3個shard + 3個replicat set + 3個configserver + 3個Mongos sh

MongoDB 學習筆記 手動預先分片

var http strong str 可見 mongod 手動 ++ 1-1 手動預先分片: 目的:手動預先分片是為了防止未來chunk的移動,減少IO。 sh.shardCollection("shop.users",{"userId": 1 }) for(v

NodeJS+Express+MySQL開發小記(2):服務器部署

win ner 關閉 私有倉庫 aux ges his 發現 all http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL開發小記(1)裏講過在