MongoDB查询与别名相同的表

时间:2013-01-05 19:13:26

标签: mongodb

我有一个集合“详情”。

{
   "_id": ObjectId("50e876e49d5d0cbc08000001"),
   "user_id": "50e876e49d5d0cbc08000000",
   "left": NumberInt(1),
   "right": NumberInt(2)
}   
{
   "_id": ObjectId("50e876b79d5d0c040a000001"),
   "user_id": "50e876b79d5d0c040a000000",
   "left": NumberInt(3),
   "right": NumberInt(4)
}   

我想在MongoDB中编写一个与SQL类似的查询:

SELECT node.user_id
FROM details AS node,
        details AS parent
WHERE node.left BETWEEN parent.left AND parent.right
       AND parent.user_id = "50e876e49d5d0cbc08000000"
ORDER BY node.left;

1 个答案:

答案 0 :(得分:2)

您可以先查询父级,然后使用它查询其他所有内容:

parent = db.details.findOne({user_id: ObjectId("50e876e49d5d0cbc08000000")});
query = {left: {$gt: parent.left, $lt: parent.right}};
select = {user_id: 1};
db.details.find(query,select).sort({left: 1})

如果您要查询“大于或等于”和“小于或等于”而不是“小于或等于”,请将$gt$lt替换为$gte$lte “大于”,“小于”。