首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB或操作问题

MongoDB或操作问题
EN

Stack Overflow用户
提问于 2016-09-14 19:43:09
回答 2查看 50关注 0票数 1

我自己正在学习MongoDB,我发现自己的处境很奇怪。下面是查询#1

  1. 在我的示例数据集上运行db.players.find({$or: [{"position":"Left Wing"}, {"position":"Right Wing"}]}).pretty()时,结果如下: "_id“:ObjectId("57d9a212698d3e0bd0f5a245"),”位置“:”右翼“,"id”:8465166,“体重”:200,“身高”:"6‘0“,"imageUrl”:"http://1.cdn.nhle.com/photos/mugs/8465166.jpg"“,”出生地“:"Seria,BRN",”年龄“:37,"name”:"Craig Adams",“生日”:“1977年4月26日”,“数字”:27 "_id“:ObjectId("57d9a212698d3e0bd0f5a246"),”位置“:”右翼“,"id”:8475761,“体重”:195,“身高”:"6‘2\“,"imageUrl”:"http://1.cdn.nhle.com/photos/mugs/8475761.jpg"“,”出生地“:"Gardena,CA,USA",”年龄“:23,"name”:“Bennett",”生日“:”1991年11月27日“,“数字”:19 "_id“:ObjectId("57d9a212698d3e0bd0f5a247")、”位置“:”左翼“、"id”:8471260、“体重”:202、“身高”:"6‘1\“、"imageUrl”:"http://3.cdn.nhle.com/photos/mugs/8471260.jpg"“、”出生地“:”草地湖、SK、CAN“、”年龄“:29岁、”姓名“:"Blake Comeau”、“生日”:“1986年2月18日”,“数字”:17 "_id“:ObjectId("57d9a212698d3e0bd0f5a249"),”位置“:”右翼“,"id”:8471703,"twitterURL“:"https://twitter.com/S9Downie",”体重: 191,“身高”:"5‘11\“,"imageUrl”:"http://1.cdn.nhle.com/photos/mugs/8471703.jpg"“,”出生地“:"Newmarket,ON,CAN,twitterHandle”:"S9Downie",“年龄”:28,“姓名”:“史蒂夫·唐尼”,“生日”:“1987年4月3日”,“数字”:23 "_id“:ObjectId("57d9a212698d3e0bd0f5a24a"),”位置“:”右翼“,"id”:8466393,“体重”:205,“身高”:"6‘1“,"imageUrl”:"http://2.cdn.nhle.com/photos/mugs/8466393.jpg"“,”出生地“:"Laval,CAN,CAN",”年龄“:35,“名称”:"Pascal Dupuis“、”生日“:”1979年4月7日“、”数字“:9 "_id”:ObjectId("57d9a212698d3e0bd0f5a24b")、“位置”:“右翼”、"id“:8471887、”体重“:189、”身高“:"5‘11\”、"imageUrl“:"http://1.cdn.nhle.com/photos/mugs/8471887.jpg"、出生地”:"Sollentuna、SWE“、”年龄“:28,"_id“:ObjectId("57d9a212698d3e0bd0f5a24c"),”位置“:”左翼“,"id”:8470543,“体重”:195,“身高”:"6‘0\“,"imageUrl”:"http://3.cdn.nhle.com/photos/mugs/8470543.jpg",出生地“:"Regina,SK,CAN",”年龄“:35,“姓名”:"Chris“,”生日“:”1979年9月26日“,”数字“:14 "_id”:ObjectId(“57d9a212698d3e0bd0bd0f5a24f”),“位置”:“左翼”,"id“:8474102,"twitterURL”:"57"“,”重量“:200,”身高“:"6‘0\”,"imageUrl“:"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8474102.jpg",”出生地:"Sherbrooke,QC,CAN","twitterHandle“:"DP_57",”年龄“:26,"name”:"David“,”生日“:”1988年5月28日“,"number”:39 抱歉,格式化JSON文件很困难。请假定上面较大的空白是括号所在的位置。
  2. 当我运行db.players.find({"position":"Left Wing"} || {"position":"Right Wing"}).pretty(),时,结果是: "_id“:ObjectId("57d9a212698d3e0bd0f5a247"),”位置“:”左翼“,"id”:8471260,“体重”:202,“身高”:"6‘1“,"imageUrl”:"http://3.cdn.nhle.com/photos/mugs/8471260.jpg"“,”出生地“:”草地湖,SK,CAN",“年龄”:29,“名称”:"Blake“,”生日“:”1986年2月18日“,“数字”:17 "_id“:ObjectId("57d9a212698d3e0bd0f5a24c"),”位置“:”左翼“,"id”:8470543,“体重”:195,“身高”:"6‘0“,"imageUrl”:"http://3.cdn.nhle.com/photos/mugs/8470543.jpg"“,”出生地“:"Regina,SK,CAN","age”:35,"name“:"Chris”,“生日”:“1979年9月26日”,“数字”:14 "_id“:ObjectId("57d9a212698d3e0bd0f5a24f")、”位置“:”左翼“、"id”:8474102、"twitterURL“:"57"”、“重量”:200、“身高”:"6‘0\“、"imageUrl”:"http://3.cdn.nhle.com/nhl/en/v3/photos/mugs/8474102.jpg"“、”出生地“:"Sherbrooke、QC、CAN”、"twitterHandle“:"DP_57”、“年龄”:26,“姓名”:“大卫·佩伦”,“生日”:“1988年5月28日”,“数字”:39

考虑到这两者都是OR操作,为什么会出现这种差异?请帮我理解一下。

IntelliJ上的Windows 10/MongoDB

EN

回答 2

Stack Overflow用户

发布于 2016-09-14 20:24:55

根据我的理解,蒙戈的知识很少。

  • \x操作符命令以下列方式工作
  • 如果a为true,则将值a传递给db.players.find(a),并忽略b。
  • 这里,'a‘指的是获得{“位置”:“左翼”},因此它只检索“左翼”文档。
  • 其中as $or:为每个条件准备索引,并获取“左翼”和“右翼”的合并结果。

在mongo上尝试下面的命令,我认为它提供了一些更好的想法。

代码语言:javascript
复制
> {$or: [(1==1), (2==1)]}
 [ true, false ]
> (1==1) || (2==1)
 true
> {$or: [(2==1), (1==1)]}
 [ false, true ]
> (2==1) || (1==1)
 true

希望能帮上忙。

谢谢,

林蛙( Rana )

票数 1
EN

Stack Overflow用户

发布于 2016-09-15 01:35:46

{"position":"Left Wing"} || {"position":"Right Wing"}的参数是一个计算为{"position":"Left Wing"}的JavaScript表达式,因为该术语是真实的。这就是您实际上要传递到find中的内容,这也是为什么您只在查询中获取"Left Wing"文档的原因。

通过执行以下操作,您可以在shell中看到这一点:

代码语言:javascript
复制
> var query = {"position":"Left Wing"} || {"position":"Right Wing"}
> query
{ "position" : "Left Wing" }

但是,您也可以简化$or查询,转而使用$in

代码语言:javascript
复制
db.players.find({"position": {$in: ["Left Wing", "Right Wing"]}})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39498461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档