Latest web development tutorials

MongoDB البلمرة

MongoDB بلمرة (مجموع) أساسا لمعالجة البيانات (مثل المتوسطات الإحصائية، مبالغ، وما إلى ذلك)، وإرجاع نتيجة البيانات المحسوبة. تشبه إلى حد العد بيان مزود (*).


الكلي) طريقة (

يستخدم MongoDB طريقة البلمرة مجموع المباراتين ().

قواعد

طريقة تركيب مجموع الأساسي () كما يلي:

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

أمثلة

جمع البيانات كما يلي:

{
   _id: ObjectId(7df78ad8902c)
   title: 'MongoDB Overview', 
   description: 'MongoDB is no sql database',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 100
},
{
   _id: ObjectId(7df78ad8902d)
   title: 'NoSQL Overview', 
   description: 'No sql database is very fast',
   by_user: 'w3cschool.cc',
   url: 'http://www.w3cschool.cc',
   tags: ['mongodb', 'database', 'NoSQL'],
   likes: 10
},
{
   _id: ObjectId(7df78ad8902e)
   title: 'Neo4j Overview', 
   description: 'Neo4j is no sql database',
   by_user: 'Neo4j',
   url: 'http://www.neo4j.com',
   tags: ['neo4j', 'database', 'NoSQL'],
   likes: 750
},

الآن وضعنا يتم احتساب أعلاه لكل من عدد من المقالات التي كتبها مؤلفون باستخدام مجموع المباراتين () تحسب على النحو التالي:

> db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
{
   "result" : [
      {
         "_id" : "w3cschool.cc",
         "num_tutorial" : 2
      },
      {
         "_id" : "Neo4j",
         "num_tutorial" : 1
      }
   ],
   "ok" : 1
}
>

أمثلة مشابهة فوق عبارة SQL: حدد by_user، العد (*) من مجموعة mycol التي كتبها by_user

في المثال أعلاه، نحن by_user الميدانية التي قام بها المجال لتجميع البيانات ويحسب المبلغ من نفس القيمة by_user المجال.

ويبين الجدول التالي بعض التعبير التجميع:

التعبير وصف أمثلة
$ مجموع حساب المجموع. db.mycol.aggregate ([{$ مجموعة: {_ID: "$ by_user"، num_tutorial: {$ المبلغ: "$ يحب"}}}])
$ متوسط حساب المتوسط db.mycol.aggregate ([{$ مجموعة: {_ID: "$ by_user"، num_tutorial: {$ متوسط: "$ يحب"}}}])
$ مين يحصل على جمع كل الوثائق تتوافق يستحق الحد الأدنى. db.mycol.aggregate ([{$ مجموعة: {_ID: "$ by_user"، num_tutorial: {$ الحد الأدنى: "$ يحب"}}}])
$ ماكس يحصل على جمع كل الوثائق المقابلة لأقصى قدر من قيمتها. db.mycol.aggregate ([{$ مجموعة: {_ID: "$ by_user"، num_tutorial: {$ الأقصى: "$ يحب"}}}])
$ دفع في الوثيقة الناتجة عن إدراج قيمة في صفيف. db.mycol.aggregate ([{مجموعة $: {_ID: "$ by_user"، URL: {$ دفع: "$ رابط"}}}])
$ AddToSet في الوثيقة الناتجة عن إدراج قيمة في صفيف، ولكن لا إنشاء نسخة. db.mycol.aggregate ([{مجموعة $: {_ID: "$ by_user"، URL: {$ addToSet: "$ رابط"}}}])
$ الأولى كونها بيانات الوثيقة الأولى وفقا لوثائق مرجعية النوع. db.mycol.aggregate ([{مجموعة $: {_ID: "$ by_user"، first_url: {$ لأول مرة: "$ رابط"}}}])
$ آخر يحصل على بيانات وثيقة الماضية وفقا لوثائق مرجعية نوع db.mycol.aggregate ([{مجموعة $: {_ID: "$ by_user"، last_url: {$ آخر: "$ رابط"}}}])

مفهوم خط أنابيب

وتستخدم الأنابيب في يونكس ولينكس بشكل عام لإخراج الأمر الحالي كمعلمة إلى الأمر التالي.

MongoDB MongoDB الأنابيب وثيقة البوليمر في الأنابيب بعد نتيجة تجهيزها لتجهيز خط أنابيب المقبل. تشغيل خط أنابيب يمكن أن تتكرر.

التعبير: معالجة المدخلات والمخرجات وثائق. التعبير عديمي الجنسية، ويمكن أن تستخدم فقط لحساب خط الأنابيب الحالي من الوثائق الإجمالية، التي لا يمكن التعامل مع وثائق أخرى.

نحن هنا نقدم إطار التجميع التي يشيع استخدامها في العديد من العمليات:

  • $ المشروع: تعديل هيكل الوثيقة الإدخال. يمكن استخدامها لإعادة تسمية، وإضافة أو إزالة الحقول، فإنه يمكن أيضا أن تستخدم لإنشاء حسابات متداخلة والوثائق.
  • $ المباراة: تستخدم لتصفية البيانات، فقط إخراج الوثائق المؤهلة. $ المباراة باستخدام MongoDB شركات الاستعلام القياسية.
  • $ الحد: للحد من عدد من الوثائق عاد خط أنابيب البلمرة MongoDB.
  • $ تخطي: تخطي عدد محدد من الوثائق في خط أنابيب البلمرة، وإرجاع بقية الوثيقة.
  • $ استرخي: يتم تقسيم مستند في مجموعة من حقل نوع إلى عدة، كل مجموعة تحتوي على قيمة.
  • $ المجموعة: جمع الوثائق تجميع يمكن استخدامها للحصول على نتائج الإحصائية.
  • $ ترتيب: إخراج وثيقة مساهمة بعد الطلب.
  • $ GeoNear: أمرت الناتج ثيقة قريب من منطقة جغرافية معينة.

أمثلة على تشغيل خطوط الانابيب

1، $ أمثلة المشروع

db.article.aggregate(
    { $project : {
        title : 1 ,
        author : 1 ,
    }}
 );

في هذه الحالة _ID، tilte ومؤلف من ثلاثة حقول، الحقل _ID الافتراضي هو أن تضمن النتائج سيكون هناك فقط، إذا كان النظام لا يحتوي على _ID إذا كان يمكن أن يكون:

db.article.aggregate(
    { $project : {
        _id : 0 ,
        title : 1 ,
        author : 1
    }});

2. $ الأمثلة مباراة

db.articles.aggregate( [
                        { $match : { score : { $gt : 70, $lte : 90 } } },
                        { $group: { _id: null, count: { $sum: 1 } } }
                       ] );

يستخدم $ المباراة للحصول على درجة أكبر من 70 أقل من أو يساوي 90 السجلات، ثم السجلات المطابقة إلى المرحلة التالية من مجموعة $ مشغل خط أنابيب للمعالجة.

3. $ تخطي سبيل المثال

db.article.aggregate(
    { $skip : 5 });

بعد $ تخطي خطوط الانابيب وتجهيز وثائق الخمسة الأولى هي "تصفية" للخروج.