1

私はコレクション「詳細」を持っています。

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

SQLで以下のようなクエリをMongoDBで記述したいと思います。

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;
4

1 に答える 1

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})

「greaterthen」と「lesserthen」の代わりに「greaterthenorequalto」と「lesserthenor equal to」をクエリする場合は、$gt$ltを置き換えます。$gte$lte

于 2013-01-05T21:05:16.173 に答える