我有一个集合“详情”。
{
"_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;
答案 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
“大于”,“小于”。