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

सिद्धांत ODM और स्कीमा-रहित डिज़ाइन

समाधान @Hash

. का उपयोग करना है

यहाँ एक बहुत ही बुनियादी उदाहरण है जो मैंने किया:

<?php

/**
 * @Document
 */
class Product
{

    /**
     * @Id
     */
    private $id;

    /**
     * @String
     */
    private $name;

    /**
     * @Hash
     */
    private $attributes = array();

    public function getId()
    {
        return $this->id;
    }

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }

    public function addAttribute($name, $value)
    {
        $key = preg_replace('/[^a-z0-9\ \_]/i', '', $name);
        $key = preg_replace('/\s+/i', '_', $key);
        $key = strtolower($key);
        $this->attributes[$key] = array('value' =>$value, 'label' => $name);
    }

    public function getAttribute($name)
    {
        return $this->attributes[$name];
    }

    public function getAttributes()
    {
        return $this->attributes;
    }

}

कुछ डेटा जोड़ें:

<?php

$pen = new Product();
$pen->setName('Cool Pen');
$pen->addAttribute('Weight', 12);
$pen->addAttribute('Ink Colour', 'Red');
$pen->addAttribute('Colour', 'Black');

$tv = new Product();
$tv->setName('LED LCD TV');
$tv->addAttribute('Weight', 12550);
$tv->addAttribute('Screen Size', 32);
$tv->addAttribute('Colour', 'Black');

$dm->persist($pen);
$dm->persist($tv);

$dm->flush();

फिर क्वेरी करें, "ब्लैक" रंग और 20 से अधिक स्क्रीन साइज़ वाला उत्पाद ढूंढें:

<?php

$query = $dm->createQueryBuilder('Catalogue\Product');
$products = $query->field('attributes.colour.value')->equals('Black')
                ->field('attributes.screen_size.value')->gte(20)
                ->getQuery()->execute();

मुझे अभी भी यकीन नहीं है कि ऐसा करने का यह सबसे अच्छा तरीका है और मेरा शोध अभी भी जारी है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एंड्रॉइड पर मोंगोडीबी

  2. बैश स्क्रिप्ट के माध्यम से मोंगो कमांड चलाते समय क्वेरी निष्पादन विफल रहा

  3. नेवला, mongoDB में स्थिति के आधार पर आबाद करें

  4. मोंगोस में एक सरणी और उसी समय उसके तत्वों को कैसे सत्यापित करें?

  5. MongoDB - नेस्टेड दस्तावेज़ में CSV आयात करें