在mongodb中查找收集的前20个文档

时间:2013-06-24 08:01:51

标签: mongodb

我想在一个Jframe上显示集合中的前20个记录,在另一个帧上显示下一个20个记录。我是MongoDB的新手。请提出查询以查找前20个和后20个文档。

3 个答案:

答案 0 :(得分:4)

在MongoDB shell上,你可以这样做:

db.collectionName.find( { city: "London" } ).skip( 20 ).limit( 20 );

显示第21至40号文件的结果。

请查看限制并跳过:http://docs.mongodb.org/manual/core/read/#limit-the-number-of-documents-to-return

我还强烈建议您查看教程:http://docs.mongodb.org/manual/tutorial/getting-started/

答案 1 :(得分:1)

这是我到目前为止所取得的成就

function getFirst20Items() {
    let items

    ITEMS_COLLECTION
        .find({})
        .limit(20)
        .sort({id: 1})
        .toArray( (err, allItems) => {
            items = allItems
        })

    return new Promise(resolve => {
        setTimeout(() => {
            resolve(items)
        }, 2000)
    })
}

function getSecond20Items() {
    let items

    ITEMS_COLLECTION
         // gte stands for --> Greater than
        .find({ id: { $gte: 20 } })
        .limit(20)
        .sort({id: 1})
        .toArray( (err, allItems) => {
            items = allItems
        })

    return new Promise(resolve => {
        setTimeout(() => {
            resolve(items)
        }, 2000)
    })
}

app.get('/first/40/products', (req, res) => {
    const all_Items = []

    getFirst20Items()
        .then(items => {
            all_Items.push(...items)
        })
        .catch(err => {
            throw new CustomError('Could not get Items', err);
        });
    getSecond20Items()
        .then(items => {
            all_Items.push(...items)
        })
        .catch(err => {
            throw new CustomError('Could not get Items', err);
        });
    setTimeout(() => {
        res.send(all_Items);    
    }, 2000);
});
  

您可以按照自己的逻辑从此处继续

     

希望这会有所帮助

答案 2 :(得分:-1)

db.getCollection('name of your collection').find({}).limit(20)