2013-08-01 59 views
0

当我们在查询中使用所有运算符时,是否可以指定范围?所有查询运算符的范围?

实施例:

favorites_ordered包含[174,225,25,165,65,87,158],非标准方式将是:

选择其中174和158是在favorites_ordered领域。

db.inventory.find({ favorites_ordered: { $all: [ 174, 158 ] } }) 

[,225,25,165,65,87,]:发现

我想使

选择其中174和158是在favorites_ordered字段中,并且有3个第一个值。

[,225,25,165,65,87,158]:找不到

回答

1

可以在蒙戈做到这一点:

> db.foo.insert({favorites_ordered: [174, 225, 25, 165, 65, 87, 158]}) 
> db.foo.insert({favorites_ordered: [158, 225, 25, 165, 65, 87, 174]}) 
> db.foo.insert({favorites_ordered: [100, 158, 225, 25, 165, 65, 87, 174]}) 

> db.foo.find({ 'favorites_ordered.0': { $in : [174, 158] } }) 
{ "_id" : ObjectId("51fa394f59a0a6afeec5b138"), "favorites_ordered" : [ 174, 225, 25, 165, 65, 87, 158 ] } 
{ "_id" : ObjectId("51fa3a2d59a0a6afeec5b139"), "favorites_ordered" : [ 158, 225, 25, 165, 65, 87, 174 ] } 
+0

蒙戈是强大的:)也许你应该用.1或.2“范围”来编辑你的例子。为了显示什么是范围而不是关键。多谢 ! – bux

+0

我只是想告诉你如何实现这一点:) –