简体   繁体   中英

Is there any way to simplify the content (one of the column retrieved from the mongodb data) by using monk?

var monk = require('monk'); var db = monk('127.0.0.1:27017/db');
    
var collection = db.get('content'); newscol.find({}, {}).then((data) => {console.log(data);})

Output:

[
    {
    _id: 1,
    content: 'a b c d e f g h i j k l m n o p q r s t u v w x y z ',
    },
    {
    _id: 2,
    content: 'b c d e f g h i j k l m n o p q r s t u v w x y z',
    },
    {
    _id: 3,
    content: 'c d e f g h i j k l m n o p q r s t u v w x y z',
    }
]

Tried to retrieve the data in a normal way.

But is there any way to retrieve only the first few words of the content as below?

[
    {
    _id: 1,
    content: 'a b c d...',
    },
    {
    _id: 2,
    content: 'b c d e...',
    },
    {
    _id: 3,
    content: 'c d e f....',
    }
]

I am trying to use the collection.aggregate but seems it doesn't help with the problem.

db.collection.aggregate([
  {
    $set: {
      content: {
        $reduce: {
          input: { $slice: [ { $split: [ "$content", " " ] }, 4 ] },
          initialValue: "",
          in: {
            $concat: [
              "$$value",
              { $cond: [ { $eq: [ "$$value", "" ] }, "", " " ] },
              "$$this"
            ]
          }
        }
      }
    }
  }
])

mongoplayground

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM