Package com.mongodb

Examples of com.mongodb.DBCollection


        if (!isConfigured()) {
            System.err.println(getInvalidConfigurationMessage());
            return;
        }

        DBCollection col = db.createCollection(getCollectionName(), null);

        // delete if already exists
        {
            col.drop();
            col = db.createCollection(getCollectionName(), null);
        }

        // create 3 records
        for (int i = 0; i < 3; i++) {
            BasicDBObject dbRow = new BasicDBObject();
            dbRow.put("id", i + 1);
            col.insert(dbRow);
        }

        final MongoDbDataContext dc = new MongoDbDataContext(db);

        DataSet ds;
View Full Code Here


        if (!isConfigured()) {
            System.err.println(getInvalidConfigurationMessage());
            return;
        }

        DBCollection col = db.createCollection(getCollectionName(), null);

        // delete if already exists
        {
            col.drop();
            col = db.createCollection(getCollectionName(), null);
        }

        // create 1000 records
        for (int i = 0; i < 1000; i++) {
            BasicDBObject dbRow = new BasicDBObject();
            dbRow.put("id", i);
            dbRow.put("name", "record no. " + i);
            if (i % 5 == 0) {
                dbRow.put("foo", "bar");
            } else {
                dbRow.put("foo", "baz");
            }
            BasicDBObject nestedObj = new BasicDBObject();
            nestedObj.put("count", i);
            nestedObj.put("constant", "foobarbaz");
            dbRow.put("baz", nestedObj);

            dbRow.put("list", Arrays.<Object> asList("l1", "l2", "l3", i));

            col.insert(dbRow);
        }

        // Instantiate the actual data context
        final DataContext dataContext = new MongoDbDataContext(db);

        assertEquals("[" + getCollectionName() + ", system.indexes]", Arrays.toString(dataContext.getDefaultSchema().getTableNames()));
        Table table = dataContext.getDefaultSchema().getTableByName(getCollectionName());
        assertEquals("[_id, baz, foo, id, list, name]", Arrays.toString(table.getColumnNames()));

        assertEquals(ColumnType.MAP, table.getColumnByName("baz").getType());
        assertEquals(ColumnType.VARCHAR, table.getColumnByName("foo").getType());
        assertEquals(ColumnType.LIST, table.getColumnByName("list").getType());
        assertEquals(ColumnType.INTEGER, table.getColumnByName("id").getType());
        assertEquals(ColumnType.ROWID, table.getColumnByName("_id").getType());

        DataSet ds = dataContext.query().from(getCollectionName()).select("name").and("foo").and("baz").and("list")
                .where("id").greaterThan(800).or("foo").isEquals("bar").execute();
        assertEquals(MongoDbDataSet.class, ds.getClass());
        assertFalse(((MongoDbDataSet) ds).isQueryPostProcessed());
        try {
            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 0, bar, {count=0, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 0]]]",
                    ds.getRow().toString());

            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 5, bar, {count=5, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 5]]]",
                    ds.getRow().toString());

            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 10, bar, {count=10, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 10]]]",
                    ds.getRow().toString());

            for (int j = 15; j < 801; j++) {
                if (j % 5 == 0) {
                    assertTrue(ds.next());
                    assertEquals("Row[values=[record no. " + j + ", bar, {count=" + j
                            + ", constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , " + j + "]]]", ds.getRow()
                            .toString());
                }
            }

            assertTrue(ds.next());
            assertTrue(ds.getRow().getValue(2) instanceof Map);
            assertEquals(LinkedHashMap.class, ds.getRow().getValue(2).getClass());

            assertTrue("unexpected type: " + ds.getRow().getValue(3).getClass(),
                    ds.getRow().getValue(3) instanceof List);
            assertEquals(BasicDBList.class, ds.getRow().getValue(3).getClass());

            assertEquals(
                    "Row[values=[record no. 801, baz, {count=801, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 801]]]",
                    ds.getRow().toString());
            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 802, baz, {count=802, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 802]]]",
                    ds.getRow().toString());
            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 803, baz, {count=803, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 803]]]",
                    ds.getRow().toString());
            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 804, baz, {count=804, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 804]]]",
                    ds.getRow().toString());
            assertTrue(ds.next());
            assertEquals(
                    "Row[values=[record no. 805, bar, {count=805, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 805]]]",
                    ds.getRow().toString());

            for (int i = 0; i < 194; i++) {
                assertTrue(ds.next());
            }
            assertEquals(
                    "Row[values=[record no. 999, baz, {count=999, constant=foobarbaz}, [ \"l1\" , \"l2\" , \"l3\" , 999]]]",
                    ds.getRow().toString());
            assertFalse(ds.next());
        } finally {
            ds.close();
        }

        ds = dataContext.query().from(getCollectionName()).select("id").and("name").where("id").in(2, 6, 8, 9)
                .execute();
        assertTrue(ds.next());
        assertEquals("Row[values=[2, record no. 2]]", ds.getRow().toString());
        assertTrue(ds.next());
        assertEquals("Row[values=[6, record no. 6]]", ds.getRow().toString());
        assertTrue(ds.next());
        assertEquals("Row[values=[8, record no. 8]]", ds.getRow().toString());
        assertTrue(ds.next());
        assertEquals("Row[values=[9, record no. 9]]", ds.getRow().toString());
        assertFalse(ds.next());
        ds.close();

        ds = dataContext.query().from(getCollectionName()).select("id").and("name").where("foo").isEquals("bar")
                .execute();
        assertEquals(MongoDbDataSet.class, ds.getClass());
        assertFalse(((MongoDbDataSet) ds).isQueryPostProcessed());

        try {
            List<Object[]> objectArrays = ds.toObjectArrays();
            assertEquals(200, objectArrays.size());
            assertEquals("[0, record no. 0]", Arrays.toString(objectArrays.get(0)));
        } finally {
            ds.close();
        }

        // test a primary key lookup query
        BasicDBObject dbRow = new BasicDBObject();
        dbRow.put("_id", 123456);
        dbRow.put("id", 123456);
        dbRow.put("name", "record no. " + 123456);
        dbRow.put("foo", "bar123456");
        BasicDBObject nestedObj = new BasicDBObject();
        nestedObj.put("count", 123456);
        nestedObj.put("constant", "foobarbaz");
        dbRow.put("baz", nestedObj);

        dbRow.put("list", Arrays.<Object> asList("l1", "l2", "l3", 123456));

        col.insert(dbRow);

        ds = dataContext.query().from(getCollectionName()).select("id").and("name").where("_id").eq(123456).execute();
        assertTrue(ds.next());
        assertEquals("Row[values=[123456, record no. 123456]]", ds.getRow().toString());
        assertFalse(ds.next());
View Full Code Here

        minLastModified = 0;
        return (int) (countBefore - countAfter);
    }

    private DBCollection getBlobCollection() {
        DBCollection collection = db.getCollection(COLLECTION_BLOBS);
        collection.setObjectClass(MongoBlob.class);
        return collection;
    }
View Full Code Here

    private void initBlobCollection() {
        if (db.collectionExists(COLLECTION_BLOBS)) {
            return;
        }
        DBCollection collection = getBlobCollection();
        DBObject index = new BasicDBObject();
        index.put(MongoBlob.KEY_ID, 1L);
        DBObject options = new BasicDBObject();
        options.put("unique", Boolean.TRUE);
        collection.ensureIndex(index, options);
    }
View Full Code Here

        }
    }
   
    @CheckForNull
    <T extends Document> T findUncached(Collection<T> collection, String key) {
        DBCollection dbCollection = getDBCollection(collection);
        long start = start();
        try {
            DBObject obj = dbCollection.findOne(getByKeyQuery(key).get());
            if (obj == null) {
                return null;
            }
            T doc = convertFromDBObject(collection, obj);
            if (doc != null) {
View Full Code Here

                                              String toKey,
                                              String indexedProperty,
                                              long startValue,
                                              int limit) {
        log("query", fromKey, toKey, limit);
        DBCollection dbCollection = getDBCollection(collection);
        QueryBuilder queryBuilder = QueryBuilder.start(Document.ID);
        queryBuilder.greaterThan(fromKey);
        queryBuilder.lessThan(toKey);
        if (indexedProperty != null) {
            queryBuilder.and(indexedProperty);
            queryBuilder.greaterThanEquals(startValue);
        }
        DBObject query = queryBuilder.get();
        long start = start();
        try {
            DBCursor cursor = dbCollection.find(query).sort(BY_ID_ASC);
            List<T> list = new ArrayList<T>();
            for (int i = 0; i < limit && cursor.hasNext(); i++) {
                DBObject o = cursor.next();
                T doc = convertFromDBObject(collection, o);
                if (collection == Collection.NODES && doc != null) {
View Full Code Here

    }

    @Override
    public <T extends Document> void remove(Collection<T> collection, String key) {
        log("remove", key);       
        DBCollection dbCollection = getDBCollection(collection);
        long start = start();
        try {
            WriteResult writeResult = dbCollection.remove(getByKeyQuery(key).get(), WriteConcern.SAFE);
            invalidateCache(collection, key);
            if (writeResult.getError() != null) {
                throw new MicroKernelException("Remove failed: " + writeResult.getError());
            }
        } finally {
View Full Code Here

    @CheckForNull
    private <T extends Document> T findAndModify(Collection<T> collection,
                                                 UpdateOp updateOp,
                                                 boolean upsert,
                                                 boolean checkConditions) {
        DBCollection dbCollection = getDBCollection(collection);
        DBObject update = createUpdate(updateOp);

        Lock lock = getAndLock(updateOp.getId());
        long start = start();
        try {
            // get modCount of cached document
            Number modCount = null;
            T cachedDoc = null;
            if (collection == Collection.NODES) {
                @SuppressWarnings("unchecked")
                T doc = (T) nodesCache.getIfPresent(updateOp.getId());
                cachedDoc = doc;
                if (cachedDoc != null) {
                    modCount = cachedDoc.getModCount();
                }
            }

            // perform a conditional update with limited result
            // if we have a matching modCount
            if (modCount != null) {
                QueryBuilder query = createQueryForUpdate(updateOp, checkConditions);
                query.and(Document.MOD_COUNT).is(modCount);
                DBObject fields = new BasicDBObject();
                // return _id only
                fields.put("_id", 1);

                DBObject oldNode = dbCollection.findAndModify(query.get(), fields,
                        null /*sort*/, false /*remove*/, update, false /*returnNew*/,
                        false /*upsert*/);
                if (oldNode != null) {
                    // success, update cached document
                    applyToCache(collection, cachedDoc, updateOp);
                    // return previously cached document
                    return cachedDoc;
                }
            }

            // conditional update failed or not possible
            // perform operation and get complete document
            QueryBuilder query = createQueryForUpdate(updateOp, checkConditions);
            DBObject oldNode = dbCollection.findAndModify(query.get(), null,
                    null /*sort*/, false /*remove*/, update, false /*returnNew*/,
                    upsert);
            if (checkConditions && oldNode == null) {
                return null;
            }
View Full Code Here

                        break;
                }
            }
        }

        DBCollection dbCollection = getDBCollection(collection);
        long start = start();
        try {
            try {
                WriteResult writeResult = dbCollection.insert(inserts, WriteConcern.SAFE);
                if (writeResult.getError() != null) {
                    return false;
                }
                if (collection == Collection.NODES) {
                    for (T doc : docs) {
View Full Code Here

    @Override
    public <T extends Document> void update(Collection<T> collection,
                                            List<String> keys,
                                            UpdateOp updateOp) {
        DBCollection dbCollection = getDBCollection(collection);
        QueryBuilder query = QueryBuilder.start(Document.ID).in(keys);
        DBObject update = createUpdate(updateOp);
        long start = start();
        try {
            Map<String, NodeDocument> cachedDocs = Collections.emptyMap();
            if (collection == Collection.NODES) {
                cachedDocs = Maps.newHashMap();
                for (String key : keys) {
                    cachedDocs.put(key, nodesCache.getIfPresent(key));
                }
            }
            try {
                WriteResult writeResult = dbCollection.update(query.get(), update, false, true, WriteConcern.SAFE);
                if (writeResult.getError() != null) {
                    throw new MicroKernelException("Update failed: " + writeResult.getError());
                }
                // update cache
                for (Entry<String, NodeDocument> entry : cachedDocs.entrySet()) {
View Full Code Here

TOP

Related Classes of com.mongodb.DBCollection

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.