我自己正在学习MongoDB,我发现自己的处境很奇怪。下面是查询#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文件很困难。请假定上面较大的空白是括号所在的位置。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
发布于 2016-09-14 20:24:55
根据我的理解,蒙戈的知识很少。
在mongo上尝试下面的命令,我认为它提供了一些更好的想法。
> {$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 )
发布于 2016-09-15 01:35:46
{"position":"Left Wing"} || {"position":"Right Wing"}的参数是一个计算为{"position":"Left Wing"}的JavaScript表达式,因为该术语是真实的。这就是您实际上要传递到find中的内容,这也是为什么您只在查询中获取"Left Wing"文档的原因。
通过执行以下操作,您可以在shell中看到这一点:
> var query = {"position":"Left Wing"} || {"position":"Right Wing"}
> query
{ "position" : "Left Wing" }但是,您也可以简化$or查询,转而使用$in:
db.players.find({"position": {$in: ["Left Wing", "Right Wing"]}})https://stackoverflow.com/questions/39498461
复制相似问题