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()));
发布了29 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u012803274/article/details/81182534
今日推荐