MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

सेलज ओआरएम के बिना मोंगोडब का उपयोग करते हैं

पहला npm i mongodb क्योंकि आपको किसी भी आईडी को new ObjectID(idStr) . के साथ लपेटना होगा ।

तब आप यह कर सकते हैं:

const collection = Pet.getDatastore().manager.collection(Pet.tableName);
const res = await collection.find({ name: { $regex: /blue/ } });
const dataWithObjectIds = await res.toArray();
const dataWithIds = JSON.parse(JSON.stringify(rawDataArr).replace(/"_id"/g, '"id"'));

यह सब हमारे लिए करने के लिए मैंने एक हेल्पर फंक्शन बनाया है:

/**
 * Use by chaining as if you were acting on a collection. So can use .find .aggregate etc.
 * Returns json searializable data.
 *
 * @param {class} model A model
 * @param {number} cnt - Number of chains on this, so I know when it reached the end
 */
function nativeMongoQuery(model, cnt) {

  const collection = model.getDatastore().manager.collection(model.tableName);

  let callCnt = 0;

  let req;

  const proxy = new Proxy({}, {
    get: (_, method) => (...args) => {

      if (!req) req = collection[method](...args);
      else req = req[method](...args);

      callCnt++;

      if (callCnt === cnt) {
        return (async function() {
          const rawDataArr = await req.toArray();
          return JSON.parse(JSON.stringify(rawDataArr).replace(/"_id"/g, '"id"'));
        })();
      } else {
        return proxy;
      }
    }
  });

  return proxy;

}

module.exports = nativeMongoQuery;

मुझे JSON पार्स और स्ट्रिंग और ग्लोबल रिप्लेस पसंद नहीं है। लेकिन अगर मैं स्ट्रिंग नहीं करता, तो mongo _id सभी ObjectId हैं स.

इसे इस तरह इस्तेमाल करें:

const { ObjectId } = require('mongodb');

function makeObjectId(id) {
   return new ObjectId(id);
}

const ownerIds = ['5349b4ddd2781d08c09890f4', '5349b4ddd2781d08c09890f5']
const ownerObjectIds = ownerIds.map(makeObjectId);
await nativeMongoQuery(Pet, 2).find({ owner: { $in: ownerObjectIds } }).sort({ dueAt: 1 });

यहाँ एक और उदाहरण है:

const mostRecentlyCreatedPets = await nativeMongoQuery(Pet, 1).aggregate([
  { $match: { owner: { $in: ownerObjectIds } } },
  { $sort: { createdAt: -1 } },
  { $limit: 1 }
]);

cnt तर्क आपको बताता है कि आपने वहां कितनी चीजों को जंजीर से जकड़ लिया है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. डोकर-लिखें और mongoDB:किसी भी संगतता संस्करण के तहत WiredTiger प्रारंभ करने में विफल?

  2. अपने MongoDB संस्करण की जाँच करने के 7 तरीके

  3. Pymongo डुप्लिकेट कुंजी त्रुटि के साथ भी सम्मिलित आईडी प्राप्त करें

  4. CRUD नोडज/एक्सप्रेस सर्वर:app.put req.body खाली है

  5. एक JSON फ़ाइल में MongoDB संग्रह निर्यात करें