在我的收藏中,我需要删除任何非特定类型的项目。
$result = $db.configs.find(
array('$not' => array(
array('$or' => array(
array('_id' => array('$type' => 2)),
array('_id' => array('$type' => 7)),
)
)
)
)
);
如果我删除了元素周围的'$ not'包装器,它确实找到了所有类型为2和7的元素,我使用的不正确吗?
答案 0 :(得分:0)
将 $and
运算符与 $not
表达式结合使用。以下mongo shell演示展示了如何测试应该使用的查询:
use test
db.test.insert([
{"_id": 1, a: 1},
{"_id": new Date(), a: 2 },
{"_id": "foo", a: 3},
{"_id": ObjectId("5579621f3cab061ff5c618c7"), a: 4}
])
db.test.find({
"$and":[
{ "_id": { "$not": { "$type": 7 } } },
{ "_id": { "$not": { "$type": 2 } } }
]
})
<强>结果强>
/* 0 */
{
"_id" : 1,
"a" : 1
}
/* 1 */
{
"_id" : ISODate("2015-06-24T09:59:54.230Z"),
"a" : 2
}
等效的PHP mongo查询:
$result = $db.test.find(
array('$and' => array(
array('_id' => array(
array("$not" => array('$type' => 2))
),
array('_id' => array(
array("$not" => array('$type' => 7))
)
)
)
);