4

コレクションの最初の 20 レコードを 1 つの Jframe に表示し、次の 20 レコードを別のフレームに表示したいと考えています。私はMongoDBの初心者です。最初の 20 個と次の 20 個のドキュメントを検索するクエリを提案してください。

4

3 に答える 3

13

MongoDB シェルでは、次のことができます。

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/

于 2013-06-24T08:05:54.640 に答える
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);
});

ここからロジックで続行できます

お役に立てれば

于 2019-03-25T10:55:50.903 に答える