مشاركة عبر


$position

$position يتم استخدام عامل التشغيل لتحديد الموضع في الصفيف حيث يجب إدراج عنصر جديد. يكون عامل التشغيل هذا مفيدا عندما تحتاج إلى إدراج عنصر في فهرس معين في صفيف بدلا من إلحاقه بالنهاية.

إعراب

{
  $push: {
    <arrayField>: {
      $each: [<value1>, <value2>],
      $position: <index>
    }
  }
}

Parameters

المعلمة‬ Description
<arrayField> الحقل في المستند الذي يحتوي على الصفيف المراد تحديثه.
<value1>, <value2>, ... القيم التي سيتم إدراجها في الصفيف.
<index> الموضع الذي يجب إدراج القيم فيه.

أمثلة

ضع في اعتبارك نموذج المستند هذا من مجموعة المتاجر.

{
    "_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
    "name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
    "location": {
        "lat": -89.2384,
        "lon": -46.4012
    },
    "staff": {
        "totalStaff": {
            "fullTime": 8,
            "partTime": 20
        }
    },
    "sales": {
        "totalSales": 75670,
        "salesByCategory": [
            {
                "categoryName": "Wine Accessories",
                "totalSales": 34440
            },
            {
                "categoryName": "Bitters",
                "totalSales": 39496
            },
            {
                "categoryName": "Rum",
                "totalSales": 1734
            }
        ]
    },
    "promotionEvents": [
        {
            "eventName": "Unbeatable Bargain Bash",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 6,
                    "Day": 23
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 7,
                    "Day": 2
                }
            },
            "discounts": [
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 7
                },
                {
                    "categoryName": "Bitters",
                    "discountPercentage": 15
                },
                {
                    "categoryName": "Brandy",
                    "discountPercentage": 8
                },
                {
                    "categoryName": "Sports Drinks",
                    "discountPercentage": 22
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 19
                }
            ]
        },
        {
            "eventName": "Steal of a Deal Days",
            "promotionalDates": {
                "startDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 21
                },
                "endDate": {
                    "Year": 2024,
                    "Month": 9,
                    "Day": 29
                }
            },
            "discounts": [
                {
                    "categoryName": "Organic Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "White Wine",
                    "discountPercentage": 20
                },
                {
                    "categoryName": "Sparkling Wine",
                    "discountPercentage": 19
                },
                {
                    "categoryName": "Whiskey",
                    "discountPercentage": 17
                },
                {
                    "categoryName": "Vodka",
                    "discountPercentage": 23
                }
            ]
        }
    ]
}

مثال 1: إدراج عنصر في موقع فهرس معين في حقل صفيف

يدرج هذا الاستعلام العلامة #NewArrival في الموضع الثاني (الفهرس 1) في tag صفيف مستند معين.

db.stores.update({
    _id: "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5"
}, {
    $push: {
        tag: {
            $each: ["#NewArrival"],
            $position: 1
        }
    }
})

يحتوي المستند المحدث على القيم التالية في صفيف العلامات.

{
  "_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
  "tag": [
    "#ShopLocal",
    "#NewArrival",
    "#FashionStore",
    "#SeasonalSale",
    "#FreeShipping",
    "#MembershipDeals"
  ]
}