MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

ODM Doctrine và thiết kế ít giản đồ

Giải pháp là sử dụng @Hash

Đây là một ví dụ RẤT cơ bản mà tôi đã làm:

<?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;
    }

}

Thêm một số dữ liệu:

<?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();

Sau đó, truy vấn, tìm sản phẩm có màu "Đen" và Kích thước màn hình lớn hơn 20:

<?php

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

Tôi vẫn không chắc liệu đây có phải là cách tốt nhất để thực hiện việc này hay không và nghiên cứu của tôi vẫn đang tiếp tục.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách thực hiện tìm kiếm ký tự đại diện trong MongoDB bằng Java

  2. Cài đặt MongoDB trên CentOS 7

  3. Làm thế nào để chuyển đổi một chuỗi sang BSON?

  4. Cấu trúc của một ứng dụng đồng bộ trong Node.js và MongoDb

  5. Có mã hóa dự phòng cho MySQL, MongoDB &PostgreSQL - ClusterControl 1.5.1