我正在尝试进行一个查询,以查找我的文档中存在的哈希字段中的值

我想检索在工期字段中具有n11和n13的文档。
我想会是那样的。
{
"durations" : { $in: ['n11','n12']}
}但这不管用
{
"durations" : { $in: [1,2,3,4,5,6,7,8,9]}
}但在这两种情况下,我都没有执行查询的结果。
谢谢你的帮助,我也试过用钥匙
发布于 2013-11-11 07:24:07
多亏了前面的答案,我找到了解决办法。
我的字段是这样定义的
/**
* @MongoDB\Hash
*/
protected $durations;但是Hash类型是为关联数组定义的,在我的例子中,只有这些值对我很重要。
所以我把它改成
/**
* @MongoDB\Collection
*/
protected $durations;在那之后我就可以做这个查询了
{
"durations" : { $in: ['n11','n12']}
}我得到了相关的结果。
感谢你们所有人
发布于 2013-11-10 12:18:01
$in运算符选择字段的值等于指定数组中任何值的文档。
durations不等于1、2、n11、n12等。因此,这两种查询都不可能匹配文档。当您使用$in运算符时,它将只匹配以下查询:
db.foo.find({
"durations" : {
"$in": [{"1" : "n3","2" : "n11", "3": "n12"}]
}
})第二个查询可以重写如下:
db.foo.find({
$or: [{"durations.1": {$exists: true}}, {"durations.2": {$exists: true}}]
})如果要匹配单个值,则必须通过完整路径进行:
db.foo.find({
$or: [{"durations.1": "n3"}, {"durations.2": "n11"}]
})如果想使用像这样的查询:db.foo.find({"durations" : { $in: ['n11','n12']}})
您将需要类似于此的模式:
{
"_id" : ObjectId("527f7ad945cb10ba295df9fd"),
"durations" : [
"n3",
"n11",
"n12"
]
}https://stackoverflow.com/questions/19889313
复制相似问题