arrays - 使用 $all 匹配 Mongo 数组中的相同项目
问题描述
我正在编写一个简单的二十一点程序。在二十一点中,人们在拿到一对 A 或 8(以及其他时间)时应该分牌。
我将所有可能的手牌组合存储在 Mongo 的唯一文档中。当遵循“二十一点基本策略”时,玩家的每个可能手牌都与可能的庄家上牌和相关动作一起存储。例如:
{ "playerHand": [8,8], "upcard" : 10, "action" : "Split" }
{ "playerHand": ["A","A"], "upcard" : 6, "action" : "Split" }
为了评估一个人的手来决定做什么,我抓住他们的手,存储为一个数组(例如,["A"、"A"] 或 [8,8])并将其传递给我的 Mongo 查询。
这是查询:
strategy = "Basic Strategy"
playerHand = Players.findOne({_id: playerId}).currentHandCards
doc = Strategy.findOne({ $and: [ {name: strategy}, {"playerHand.cards" : { $all: playerHand} }, {"playerHand.situation.upcard" : dealerUpcard} ]})
doc.playerHand.situation.action
这种方法适用于所有可能的牌,但当玩家有一对相同的牌时似乎失败了。我想我一定遗漏了一些关于 $all 如何处理重复项的信息。
感谢您的任何见解!
该集合是使用此插入命令创建的。
Strategy.insert
name: "Basic Strategy"
playerHand:
cards: playerHand
situation:
upcard: upcard
action: action
解决方案
推荐阅读
- php - 未定义索引:ELEMENT Laravel 黄昏
- c# - 如何为元素设置动画,其中触发器是要设置动画的属性的数据更改
- sql - SQL 将字符串传递给不是列名的存储过程
- styles - 地理服务器中的样式验证问题
- visual-studio - 有没有办法使用不同的扩展名和设置并排运行两个 Visual Studio 实例?
- c++ - 如何防止 boost logger 在每条记录后添加 \n?
- java - 我想从 WebView 下载文件
- docker - docker 容器中的 REDIS_HOST 是什么?
- vue.js - 如何使用 Vuetify 创建带有子菜单的菜单?
- python - 如何从 Python 中的文本中正确提取各种日期格式