MongoDB - Можно ли сравнивать документы через поле _id? - PullRequest
1 голос
/ 03 февраля 2020

Как видно из заголовка, мне нужно сравнить документы через автоматически сгенерированное поле _id. Например, возможно ли сделать запрос, такой как « более новые / более старые записи, чем идентификатор 5e120e38c149d02d27ea750c», что-то вроде greater-than / less-than операций?

Что-то вроде ниже один не сделал то, что ожидалось:

num_apps = db.app.count_documents({"_id": {"$lt": "5e120e38c149d02d27ea750c"}})

ps Использование модуля PyMongo.

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете сделать это, но проблема с вашим запросом в том, что вы передаете строку в качестве ввода, но тип _id в БД равен ObjectId(), поэтому ввод должен совпадать с ним. Поэтому преобразуйте его перед запросом в БД.

При использовании собственного драйвера mongodb :

const ObjectId = require('mongodb').ObjectID;

num_apps = db.app.count_documents({ "_id": { "$lt": ObjectId("5e120e38c149d02d27ea750c") } })

При использовании mon goose:

const mongoose = require('mongoose');
let id = mongoose.Types.ObjectId('5e120e38c149d02d27ea750c');
num_apps = db.app.count_documents({ "_id": { "$lt": id } })

При использовании pymon go:

from pymongo import MongoClient
from bson.objectid import ObjectId

num_apps = db.app.count_documents({ "_id": { "$lt": ObjectId("5e120e38c149d02d27ea750c") } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...